Fix a bug that set RGBA bits length always to 0 (reported by Marcin Konicki).
PPC byte order now supported (thanks Nathan Whitehorn).
Double buffering is now always forced.
Unlock the BGLView looper only if needed. Should fix the GLUT-based apps crash
at window closing.
SwapBuffers() now can wait for next vertical retrace.
And several other minor changes...
diff --git a/src/mesa/drivers/beos/GLView.h b/src/mesa/drivers/beos/GLView.h
index 595000b..8d9d25b 100644
--- a/src/mesa/drivers/beos/GLView.h
+++ b/src/mesa/drivers/beos/GLView.h
@@ -9,24 +9,24 @@
 #ifndef BGLVIEW_H
 #define BGLVIEW_H
 
-// added by Brian Paul:
-#ifndef BGL_RGB
+#include <GL/gl.h>
+
 #define BGL_RGB			0
 #define BGL_INDEX		1 
 #define BGL_SINGLE		0
 #define BGL_DOUBLE		2
 #define BGL_DIRECT		0
-#define BGL_INDIRECT		4
+#define BGL_INDIRECT	4
 #define BGL_ACCUM		8
 #define BGL_ALPHA		16
 #define BGL_DEPTH		32
 #define BGL_OVERLAY		64
-#define BGL_UNDERLAY		128
+#define BGL_UNDERLAY	128
 #define BGL_STENCIL		512
-#endif
+
+#ifdef __cplusplus
 
 
-#include <GL/gl.h>
 #include <AppKit.h>
 #include <interface/Window.h>
 #include <interface/View.h>
@@ -37,96 +37,91 @@
 class BGLView : public BView {
 public:
 
-	BGLView(BRect rect, char *name,
-			ulong resizingMode, ulong mode,
-			ulong options);
-	virtual ~BGLView();
+					BGLView(BRect rect, char *name,
+						ulong resizingMode, ulong mode,
+						ulong options);
+virtual 			~BGLView();
 
-	void		LockGL();
-	void		UnlockGL();
-	void		SwapBuffers();
-
-        // Added for Mesa (can't be virtual!)
-        void CopySubBufferMESA(GLint x, GLint y, GLuint width, GLuint height);
-
-	BView *     EmbeddedView();
-	status_t    CopyPixelsOut(BPoint source, BBitmap *dest);
-	status_t    CopyPixelsIn(BBitmap *source, BPoint dest);
-
-	virtual void        ErrorCallback(unsigned long errorCode); // GLenum errorCode);
+		void		LockGL();
+		void		UnlockGL();
+		void		SwapBuffers();
+		void		SwapBuffers( bool vSync );
+		BView *     EmbeddedView();
+		status_t    CopyPixelsOut(BPoint source, BBitmap *dest);
+		status_t    CopyPixelsIn(BBitmap *source, BPoint dest);
+virtual	void        ErrorCallback(unsigned long errorCode); 	// Mesa's GLenum is uint where Be's ones was ulong!
 		
-	virtual	void		Draw(BRect updateRect);
+virtual	void		Draw(BRect updateRect);
 
-	virtual void		AttachedToWindow();
-	virtual void        AllAttached();
-	virtual void        DetachedFromWindow();
-	virtual void        AllDetached();
+virtual void		AttachedToWindow();
+virtual void        AllAttached();
+virtual void        DetachedFromWindow();
+virtual void        AllDetached();
  
-	virtual void		FrameResized(float width, float height);
-	virtual status_t    Perform(perform_code d, void *arg);
+virtual void		FrameResized(float width, float height);
+virtual status_t    Perform(perform_code d, void *arg);
 
 	/* The public methods below, for the moment,
 	   are just pass-throughs to BView */
 
-	virtual status_t    Archive(BMessage *data, bool deep = true) const;
+virtual status_t    Archive(BMessage *data, bool deep = true) const;
 
-	virtual void        MessageReceived(BMessage *msg);
-	virtual void        SetResizingMode(uint32 mode);
+virtual void        MessageReceived(BMessage *msg);
+virtual void        SetResizingMode(uint32 mode);
 
-	virtual void        Show();
-	virtual void        Hide();
+virtual void        Show();
+virtual void        Hide();
 
-	virtual BHandler   *ResolveSpecifier(BMessage *msg, int32 index,
+virtual BHandler   *ResolveSpecifier(BMessage *msg, int32 index,
 							BMessage *specifier, int32 form,
 							const char *property);
-	virtual status_t    GetSupportedSuites(BMessage *data);
+virtual status_t    GetSupportedSuites(BMessage *data);
 
-	/* New public functions */
-	void		DirectConnected( direct_buffer_info *info );
-	void		EnableDirectMode( bool enabled );
+/* New public functions */
+		void		DirectConnected( direct_buffer_info *info );
+		void		EnableDirectMode( bool enabled );
 
+		void *		getGC()	{ return m_gc; }
+		
 private:
 
-	virtual void        _ReservedGLView1();
-	virtual void        _ReservedGLView2(); 
-	virtual void        _ReservedGLView3(); 
-	virtual void        _ReservedGLView4(); 
-	virtual void        _ReservedGLView5(); 
-	virtual void        _ReservedGLView6(); 
-	virtual void        _ReservedGLView7(); 
-	virtual void        _ReservedGLView8(); 
+virtual void        _ReservedGLView1();
+virtual void        _ReservedGLView2(); 
+virtual void        _ReservedGLView3(); 
+virtual void        _ReservedGLView4(); 
+virtual void        _ReservedGLView5(); 
+virtual void        _ReservedGLView6(); 
+virtual void        _ReservedGLView7(); 
+virtual void        _ReservedGLView8(); 
 
-    BGLView(const BGLView &);
-    BGLView     &operator=(const BGLView &);
+					BGLView(const BGLView &);
+					BGLView     &operator=(const BGLView &);
 
-	void        dither_front();
-	bool        confirm_dither();
-	void        draw(BRect r);
+		void        dither_front();
+		bool        confirm_dither();
+		void        draw(BRect r);
 		
-	void *		m_gc;
-	uint32		m_options;
-	uint32      m_ditherCount;
-	BLocker		m_drawLock;
-	BLocker     m_displayLock;
-#if OLD_GLVIEW
-	BView *		m_embeddedFront;
-	BView *     m_embeddedBack;
-#else
-	void *		m_clip_info;
-	void *     	_reserved1;
-#endif
-	BBitmap *   m_ditherMap;
-	BRect       m_bounds;
-	int16 *     m_errorBuffer[2];
-	uint64      _reserved[8];
+		void *		m_gc;
+		uint32		m_options;
+		uint32      m_ditherCount;
+		BLocker		m_drawLock;
+		BLocker     m_displayLock;
+		void *		m_clip_info;
+		void *     	_Unused1;
+
+		BBitmap *   m_ditherMap;
+		BRect       m_bounds;
+		int16 *     m_errorBuffer[2];
+		uint64      _reserved[8];
 
 	/* Direct Window stuff */
 private:	
-	void drawScanline( int x1, int x2, int y, void *data );
-	static void scanlineHandler(struct rasStateRec *state, GLint x1, GLint x2);
-	void		lock_draw();
-	void		unlock_draw();
-	bool		validateView();
+		void 		drawScanline( int x1, int x2, int y, void *data );
+static 	void 		scanlineHandler(struct rasStateRec *state, GLint x1, GLint x2);
+
+		void		lock_draw();
+		void		unlock_draw();
+		bool		validateView();
 };
 
 
@@ -187,8 +182,9 @@
 	uint64      _reserved[7];
 };
 
+#endif	// __cplusplus
 
-#endif
+#endif	// BGLVIEW_H