summaryrefslogtreecommitdiffstats
path: root/src/gallium/targets/libgl-haiku/GLRendererRoster.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/targets/libgl-haiku/GLRendererRoster.h')
-rw-r--r--src/gallium/targets/libgl-haiku/GLRendererRoster.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/gallium/targets/libgl-haiku/GLRendererRoster.h b/src/gallium/targets/libgl-haiku/GLRendererRoster.h
new file mode 100644
index 00000000000..5c8da271198
--- /dev/null
+++ b/src/gallium/targets/libgl-haiku/GLRendererRoster.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2006-2012, Haiku, Inc. All Rights Reserved.
+ * Distributed under the terms of the MIT License.
+ *
+ * Authors:
+ * Philippe Houdoin <[email protected]>
+ */
+#ifndef _GLRENDERER_ROSTER_H
+#define _GLRENDERER_ROSTER_H
+
+
+#include <GLRenderer.h>
+
+#include <map>
+
+
+struct renderer_item {
+ BGLRenderer* renderer;
+ entry_ref ref;
+ ino_t node;
+ image_id image;
+};
+
+typedef std::map<renderer_id, renderer_item> RendererMap;
+
+
+class GLRendererRoster {
+ public:
+ GLRendererRoster(BGLView* view, ulong options);
+ virtual ~GLRendererRoster();
+
+ BGLRenderer* GetRenderer(int32 id = 0);
+
+ private:
+ void AddDefaultPaths();
+ status_t AddPath(const char* path);
+ status_t AddRenderer(BGLRenderer* renderer,
+ image_id image, const entry_ref* ref, ino_t node);
+ status_t CreateRenderer(const entry_ref& ref);
+
+ RendererMap fRenderers;
+ int32 fNextID;
+ BGLView* fView;
+ ulong fOptions;
+ bool fSafeMode;
+ const char* fABISubDirectory;
+
+};
+
+
+#endif /* _GLRENDERER_ROSTER_H */