mesa/src/hgl/GLRendererRoster.h

53 lines
1.1 KiB
C++

/*
* Copyright 2006-2012, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Philippe Houdoin <philippe.houdoin@free.fr>
*/
#ifndef _GLRENDERER_ROSTER_H
#define _GLRENDERER_ROSTER_H
#include <GLRenderer.h>
#include <vector>
typedef BGLRenderer* (*InstantiateRenderer) (BGLView* view, ulong options);
struct renderer_item {
InstantiateRenderer entry;
entry_ref ref;
ino_t node;
image_id image;
};
typedef std::vector<renderer_item> RendererMap;
class GLRendererRoster {
public:
static GLRendererRoster *Roster();
BGLRenderer* GetRenderer(BGLView *view, ulong options);
private:
GLRendererRoster();
virtual ~GLRendererRoster();
void AddDefaultPaths();
status_t AddPath(const char* path);
status_t AddRenderer(InstantiateRenderer entry, image_id image,
const entry_ref* ref, ino_t node);
status_t CreateRenderer(const entry_ref& ref);
static GLRendererRoster* fInstance;
bool fSafeMode;
const char* fABISubDirectory;
RendererMap fRenderers;
};
#endif /* _GLRENDERER_ROSTER_H */