haiku libGL: Move from gallium target to src/hgl
[mesa.git] / src / hgl / GLRendererRoster.h
diff --git a/src/hgl/GLRendererRoster.h b/src/hgl/GLRendererRoster.h
new file mode 100644 (file)
index 0000000..5c8da27
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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 <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 */