diff options
author | Philippe Houdoin <phoudoin@freedesktop.org> | 2004-08-14 09:43:07 +0000 |
---|---|---|
committer | Philippe Houdoin <phoudoin@freedesktop.org> | 2004-08-14 09:43:07 +0000 |
commit | 4b3be4d8be05da426e9f9b06d6d8317e86e70d68 (patch) | |
tree | 937d3c2655847da5d8da3b23bea4293d278ed5d0 /src/mesa/drivers/beos/GLView.h | |
parent | 7b0c30574c7bb74036c3afb925cc702a4d7fe0b1 (diff) |
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...
Diffstat (limited to 'src/mesa/drivers/beos/GLView.h')
-rw-r--r-- | src/mesa/drivers/beos/GLView.h | 150 |
1 files changed, 73 insertions, 77 deletions
diff --git a/src/mesa/drivers/beos/GLView.h b/src/mesa/drivers/beos/GLView.h index 595000bb56..8d9d25bb1c 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(); - - 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); + BGLView(BRect rect, char *name, + ulong resizingMode, ulong mode, + ulong options); +virtual ~BGLView(); + + 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(); - - BGLView(const BGLView &); - BGLView &operator=(const BGLView &); - - void dither_front(); - bool confirm_dither(); - void draw(BRect r); +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]; + 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 @@ private: uint64 _reserved[7]; }; +#endif // __cplusplus -#endif +#endif // BGLVIEW_H |