Updates from Philippe Houdoin.
diff --git a/src/mesa/drivers/beos/GLView.h b/src/mesa/drivers/beos/GLView.h
new file mode 100644
index 0000000..595000b
--- /dev/null
+++ b/src/mesa/drivers/beos/GLView.h
@@ -0,0 +1,196 @@
+/*******************************************************************************
+/
+/	File:		GLView.h
+/
+/	Copyright 1993-98, Be Incorporated, All Rights Reserved.
+/
+*******************************************************************************/
+
+#ifndef BGLVIEW_H
+#define BGLVIEW_H
+
+// added by Brian Paul:
+#ifndef BGL_RGB
+#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_ACCUM		8
+#define BGL_ALPHA		16
+#define BGL_DEPTH		32
+#define BGL_OVERLAY		64
+#define BGL_UNDERLAY		128
+#define BGL_STENCIL		512
+#endif
+
+
+#include <GL/gl.h>
+#include <AppKit.h>
+#include <interface/Window.h>
+#include <interface/View.h>
+#include <interface/Bitmap.h>
+#include <game/WindowScreen.h>
+#include <game/DirectWindow.h>
+
+class BGLView : public BView {
+public:
+
+	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);
+		
+	virtual	void		Draw(BRect updateRect);
+
+	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);
+
+	/* The public methods below, for the moment,
+	   are just pass-throughs to BView */
+
+	virtual status_t    Archive(BMessage *data, bool deep = true) const;
+
+	virtual void        MessageReceived(BMessage *msg);
+	virtual void        SetResizingMode(uint32 mode);
+
+	virtual void        Show();
+	virtual void        Hide();
+
+	virtual BHandler   *ResolveSpecifier(BMessage *msg, int32 index,
+							BMessage *specifier, int32 form,
+							const char *property);
+	virtual status_t    GetSupportedSuites(BMessage *data);
+
+	/* New public functions */
+	void		DirectConnected( direct_buffer_info *info );
+	void		EnableDirectMode( bool enabled );
+
+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(); 
+
+    BGLView(const BGLView &);
+    BGLView     &operator=(const BGLView &);
+
+	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];
+
+	/* 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();
+};
+
+
+
+class BGLScreen : public BWindowScreen {
+public:
+	BGLScreen(char *name,
+			ulong screenMode, ulong options,
+			status_t *error, bool debug=false);
+	~BGLScreen();
+
+	void		LockGL();
+	void		UnlockGL();
+	void		SwapBuffers();
+	virtual void        ErrorCallback(GLenum errorCode);
+
+	virtual void		ScreenConnected(bool connected);
+	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 BWindowScreen */
+
+	virtual status_t    Archive(BMessage *data, bool deep = true) const;
+	virtual void        MessageReceived(BMessage *msg);
+
+	virtual void        Show();
+	virtual void        Hide();
+
+	virtual BHandler   *ResolveSpecifier(BMessage *msg,
+                        int32 index,
+						BMessage *specifier,
+						int32 form,
+						const char *property);
+	virtual status_t    GetSupportedSuites(BMessage *data);
+
+private:
+
+	virtual void        _ReservedGLScreen1();
+	virtual void        _ReservedGLScreen2();
+	virtual void        _ReservedGLScreen3();
+	virtual void        _ReservedGLScreen4();
+	virtual void        _ReservedGLScreen5();
+	virtual void        _ReservedGLScreen6();
+	virtual void        _ReservedGLScreen7();
+	virtual void        _ReservedGLScreen8(); 
+
+	BGLScreen(const BGLScreen &);
+	BGLScreen   &operator=(const BGLScreen &);
+
+	void *		m_gc;
+	long		m_options;
+	BLocker		m_drawLock;
+		
+	int32		m_colorSpace;
+	uint32		m_screen_mode;
+		
+	uint64      _reserved[7];
+};
+
+
+#endif
+
+
+
+
+