diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2003-12-13 01:26:14 +0000 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2003-12-13 01:26:14 +0000 |
commit | 50f20ec7f5a10b3c07d41912be3bcec082c43711 (patch) | |
tree | ed0485762b7a9843aa929ebcf6a5fa44bbe1a126 /src/mesa | |
parent | 3b81ccd826271925bbc9286df84a802027645875 (diff) |
Updates from Philippe Houdoin.
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/Makefile.BeOS | 303 | ||||
-rw-r--r-- | src/mesa/drivers/beos/GLView.cpp | 61 | ||||
-rw-r--r-- | src/mesa/drivers/beos/GLView.h | 196 |
3 files changed, 534 insertions, 26 deletions
diff --git a/src/mesa/Makefile.BeOS b/src/mesa/Makefile.BeOS new file mode 100644 index 0000000000..d1ebaee220 --- /dev/null +++ b/src/mesa/Makefile.BeOS @@ -0,0 +1,303 @@ +# Mesa 3-D graphics library +# Version: 5.1 +# +# Copyright (C) 1995-2003 Brian Paul All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# BeOS driver makefile v1.0 for Mesa 5.1.x +# +# Copyright (C) 2002-2003 - Philippe Houdoin +# Email : philippe.houdoin@free.fr +# Web : http://philippe.houdoin.free.fr/phil/beos/index-en.html +# +# ------------------------------------------------------------------- + +## BeOS Generic Makefile v2.0 ## + +## Fill in this file to specify the project being created, and the referenced +## makefile-engine will do all of the hard work for you. This handles both +## Intel and PowerPC builds of the BeOS. + +## Application Specific Settings --------------------------------------------- + +# specify the name of the binary +NAME= libGL.so + +# specify the type of binary +# APP: Application +# SHARED: Shared library or add-on +# STATIC: Static library archive +# DRIVER: Kernel Driver +TYPE= SHARED + +# specify the source files to use +# full paths or paths relative to the makefile can be included +# all files, regardless of directory, will have their object +# files created in the common object directory. +# Note that this means this makefile will not work correctly +# if two source files with the same name (source.c or source.cpp) +# are included from different directories. Also note that spaces +# in folder names do not work well with this makefile. + + +include sources + + +BEOS_DRIVER_SOURCES = \ + drivers/beos/GLView.cpp + +MESA_DEFINES = +ASM_SOURCES = + +# To use GAS assembler, uncomment this line instead: +MESA_DEFINES += GNU_ASSEMBLER +# To use NASM assembler, uncomment this line instead: +# MESA_DEFINES += NASM_ASSEMBLER +# To build a DEBUG version of Mesa, uncomment this line instead: +# MESA_DEFINES += DEBUG + +# x86-optimized code +MACHINE=$(shell uname -m) +ifeq ($(MACHINE), BePC) + MESA_DEFINES += USE_X86_ASM USE_SSE_ASM USE_MMX_ASM + MESA_DEFINES += USE_3DNOW_ASM + ASM_SOURCES = $(X86_SOURCES) +else + # No assembly optimization for PowerPC... + # HAVE_ALTIVEC=1 +endif + +# FIXME: SI-GLU version support currently broken +# USE_SI_GLU=1 +ifdef USE_SI_GLU + GLU_SOURCES = \ + ../si-glu/libutil/error.c \ + ../si-glu/libutil/glue.c \ + ../si-glu/libutil/mipmap.c \ + ../si-glu/libutil/project.c \ + ../si-glu/libutil/quad.c \ + ../si-glu/libutil/registry.c \ + ../si-glu/libtess/dict.c \ + ../si-glu/libtess/geom.c \ + ../si-glu/libtess/memalloc.c \ + ../si-glu/libtess/mesh.c \ + ../si-glu/libtess/normal.c \ + ../si-glu/libtess/priorityq.c \ + ../si-glu/libtess/render.c \ + ../si-glu/libtess/sweep.c \ + ../si-glu/libtess/tess.c \ + ../si-glu/libtess/tessmono.c \ + ../si-glu/libnurbs/interface/bezierEval.cc \ + ../si-glu/libnurbs/interface/bezierPatch.cc \ + ../si-glu/libnurbs/interface/bezierPatchMesh.cc \ + ../si-glu/libnurbs/interface/glcurveval.cc \ + ../si-glu/libnurbs/interface/glinterface.cc \ + ../si-glu/libnurbs/interface/glrenderer.cc \ + ../si-glu/libnurbs/interface/glsurfeval.cc \ + ../si-glu/libnurbs/interface/incurveeval.cc \ + ../si-glu/libnurbs/interface/insurfeval.cc \ + ../si-glu/libnurbs/internals/arc.cc \ + ../si-glu/libnurbs/internals/arcsorter.cc \ + ../si-glu/libnurbs/internals/arctess.cc \ + ../si-glu/libnurbs/internals/backend.cc \ + ../si-glu/libnurbs/internals/basiccrveval.cc \ + ../si-glu/libnurbs/internals/basicsurfeval.cc \ + ../si-glu/libnurbs/internals/bin.cc \ + ../si-glu/libnurbs/internals/bufpool.cc \ + ../si-glu/libnurbs/internals/cachingeval.cc \ + ../si-glu/libnurbs/internals/ccw.cc \ + ../si-glu/libnurbs/internals/coveandtiler.cc \ + ../si-glu/libnurbs/internals/curve.cc \ + ../si-glu/libnurbs/internals/curvelist.cc \ + ../si-glu/libnurbs/internals/curvesub.cc \ + ../si-glu/libnurbs/internals/dataTransform.cc \ + ../si-glu/libnurbs/internals/displaylist.cc \ + ../si-glu/libnurbs/internals/flist.cc \ + ../si-glu/libnurbs/internals/flistsorter.cc \ + ../si-glu/libnurbs/internals/hull.cc \ + ../si-glu/libnurbs/internals/intersect.cc \ + ../si-glu/libnurbs/internals/knotvector.cc \ + ../si-glu/libnurbs/internals/mapdesc.cc \ + ../si-glu/libnurbs/internals/mapdescv.cc \ + ../si-glu/libnurbs/internals/maplist.cc \ + ../si-glu/libnurbs/internals/mesher.cc \ + ../si-glu/libnurbs/internals/monoTriangulationBackend.cc \ + ../si-glu/libnurbs/internals/monotonizer.cc \ + ../si-glu/libnurbs/internals/mycode.cc \ + ../si-glu/libnurbs/internals/nurbsinterfac.cc \ + ../si-glu/libnurbs/internals/nurbstess.cc \ + ../si-glu/libnurbs/internals/patch.cc \ + ../si-glu/libnurbs/internals/patchlist.cc \ + ../si-glu/libnurbs/internals/quilt.cc \ + ../si-glu/libnurbs/internals/reader.cc \ + ../si-glu/libnurbs/internals/renderhints.cc \ + ../si-glu/libnurbs/internals/slicer.cc \ + ../si-glu/libnurbs/internals/sorter.cc \ + ../si-glu/libnurbs/internals/splitarcs.cc \ + ../si-glu/libnurbs/internals/subdivider.cc \ + ../si-glu/libnurbs/internals/tobezier.cc \ + ../si-glu/libnurbs/internals/trimline.cc \ + ../si-glu/libnurbs/internals/trimregion.cc \ + ../si-glu/libnurbs/internals/trimvertpool.cc \ + ../si-glu/libnurbs/internals/uarray.cc \ + ../si-glu/libnurbs/internals/varray.cc \ + ../si-glu/libnurbs/nurbtess/directedLine.cc \ + ../si-glu/libnurbs/nurbtess/gridWrap.cc \ + ../si-glu/libnurbs/nurbtess/monoChain.cc \ + ../si-glu/libnurbs/nurbtess/monoPolyPart.cc \ + ../si-glu/libnurbs/nurbtess/monoTriangulation.cc \ + ../si-glu/libnurbs/nurbtess/partitionX.cc \ + ../si-glu/libnurbs/nurbtess/partitionY.cc \ + ../si-glu/libnurbs/nurbtess/polyDBG.cc \ + ../si-glu/libnurbs/nurbtess/polyUtil.cc \ + ../si-glu/libnurbs/nurbtess/primitiveStream.cc \ + ../si-glu/libnurbs/nurbtess/quicksort.cc \ + ../si-glu/libnurbs/nurbtess/rectBlock.cc \ + ../si-glu/libnurbs/nurbtess/sampleComp.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompBot.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompRight.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompTop.cc \ + ../si-glu/libnurbs/nurbtess/sampleMonoPoly.cc \ + ../si-glu/libnurbs/nurbtess/sampledLine.cc \ + ../si-glu/libnurbs/nurbtess/searchTree.cc +else + GLU_SOURCES = \ + ../glu/mesa/glu.c \ + ../glu/mesa/mipmap.c \ + ../glu/mesa/project.c \ + ../glu/mesa/quadric.c \ + ../glu/mesa/tess.c \ + ../glu/mesa/tesselat.c \ + ../glu/mesa/polytest.c \ + ../glu/mesa/nurbs.c \ + ../glu/mesa/nurbscrv.c \ + ../glu/mesa/nurbssrf.c \ + ../glu/mesa/nurbsutl.c +endif + +MESA_SOURCES = $(CORE_SOURCES) $(ASM_SOURCES) + +SRCS = $(MESA_SOURCES) $(GLU_SOURCES) $(BEOS_DRIVER_SOURCES) + +# specify the resource files to use +# full path or a relative path to the resource file can be used. +RSRCS = + +# specify additional libraries to link against +# there are two acceptable forms of library specifications +# - if your library follows the naming pattern of: +# libXXX.so or libXXX.a you can simply specify XXX +# library: libbe.so entry: be +# +# - if your library does not follow the standard library +# naming scheme you need to specify the path to the library +# and it's name +# library: my_lib.a entry: my_lib.a or path/my_lib.a +LIBS = be + +# specify additional paths to directories following the standard +# libXXX.so or libXXX.a naming scheme. You can specify full paths +# or paths relative to the makefile. The paths included may not +# be recursive, so include all of the paths where libraries can +# be found. Directories where source files are found are +# automatically included. +LIBPATHS = + +# additional paths to look for system headers +# thes use the form: #include <header> +# source file directories are NOT auto-included here +SYSTEM_INCLUDE_PATHS = ../../include + +ifdef USE_SI_GLU + SYSTEM_INCLUDE_PATHS += ../glu/sgi/include +endif + +# additional paths to look for local headers +# thes use the form: #include "header" +# source file directories are automatically included +LOCAL_INCLUDE_PATHS = \ + . \ + ./main \ + ./glapi \ + ./math \ + ./transform \ + ./swrast \ + ./swrast_setup \ + ./tnl \ + ./tnl_dd + +# specify the level of optimization that you desire +# NONE, SOME, FULL +OPTIMIZE = FULL + +# specify any preprocessor symbols to be defined. The symbols +# will be set to a value of 1. For example specify DEBUG if you want +# DEBUG=1 to be set when compiling. +DEFINES = $(MESA_DEFINES) + +# specify special warning levels +# if unspecified default warnings will be used +# NONE = suppress all warnings +# ALL = enable all warnings +WARNINGS = ALL + +# specify whether image symbols will be created +# so that stack crawls in the debugger are meaningful +# if TRUE symbols will be created +SYMBOLS = TRUE + +# specify debug settings +# if TRUE will allow application to be run from +# a source-level debugger +# DEBUGGER = TRUE +DEBUGGER = FALSE + +# specify additional compiler flags for all files +COMPILER_FLAGS = + +# specify additional linker flags +LINKER_FLAGS = + + + +## include the makefile-engine +include /boot/develop/etc/makefile-engine + + + +# x86/matypes.h include file is *generated*! +# Rules to (re)generate it as needed: + +x86/common_x86_asm.S : x86/matypes.h + +x86/matypes.h : x86/gen_matypes.c + @echo "(Re-)Generating $@ ..." + $(CC) $< $(INCLUDES) $(CFLAGS) -o x86/gen_matypes + x86/gen_matypes > $@ + rm -f x86/gen_matypes + +## Add NASM support for assembly code compilation... +# $(OBJ_DIR)/%.o : %.nasm +# nasm -f elf $(MESA_DEFINES) -o $@ $< + +$(OBJ_DIR)/%.o : %.S + gcc -c $< $(INCLUDES) $(CFLAGS) -o $@ +# gcc $(INCLUDES) $(CFLAGS) -E $< | grep -v '^$$' > $(addsuffix .nasm, $(basename $<)) +# nasm -f elf $(MESA_DEFINES) -o $@ $(addsuffix .nasm, $(basename $<)) + diff --git a/src/mesa/drivers/beos/GLView.cpp b/src/mesa/drivers/beos/GLView.cpp index b6b85159a2..0c24b0f29f 100644 --- a/src/mesa/drivers/beos/GLView.cpp +++ b/src/mesa/drivers/beos/GLView.cpp @@ -1,4 +1,4 @@ -/* $Id: GLView.cpp,v 1.9 2003/03/30 15:49:01 brianp Exp $ */ +/* $Id: GLView.cpp,v 1.10 2003/12/13 01:26:14 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -25,22 +25,24 @@ */ -#include "glheader.h" - #include <assert.h> #include <stdio.h> extern "C" { +#include "glheader.h" +#include "buffers.h" +#include "bufferobj.h" #include "context.h" #include "colormac.h" #include "depth.h" #include "extensions.h" #include "macros.h" #include "matrix.h" -#include "mmath.h" #include "mtypes.h" #include "texformat.h" +#include "texobj.h" +#include "teximage.h" #include "texstore.h" #include "array_cache/acache.h" #include "swrast/swrast.h" @@ -56,7 +58,7 @@ extern "C" { } // extern "C" -#include <GLView.h> +#include "GLView.h" // BeOS component ordering for B_RGBA32 bitmap format #define BE_RCOMP 2 @@ -277,6 +279,17 @@ BGLView::BGLView(BRect rect, char *name, // create core context GLcontext * ctx = _mesa_create_context(visual, NULL, md, GL_FALSE); + ctx->Driver.NewTextureObject = _mesa_new_texture_object; + ctx->Driver.DeleteTexture = _mesa_delete_texture_object; + + _mesa_initialize_context(ctx, visual, NULL, md, GL_FALSE); + + _mesa_enable_sw_extensions(ctx); + _mesa_enable_1_3_extensions(ctx); + _mesa_enable_1_4_extensions(ctx); + _mesa_enable_1_5_extensions(ctx); + + // create core framebuffer GLframebuffer * buffer = _mesa_create_framebuffer(visual, @@ -286,10 +299,6 @@ BGLView::BGLView(BRect rect, char *name, alphaFlag ); - _mesa_enable_sw_extensions(ctx); - _mesa_enable_1_3_extensions(ctx); - _mesa_enable_1_4_extensions(ctx); - /* Initialize the software rasterizer and helper modules. */ _swrast_CreateContext(ctx); @@ -578,19 +587,23 @@ void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, GLvisual * visual, GLf assert(md->m_glcontext == ctx ); + // Use default TCL pipeline + tnl->Driver.RunPipeline = _tnl_run_pipeline; + ctx->Driver.GetString = MesaDriver::GetString; ctx->Driver.UpdateState = MesaDriver::UpdateState; - ctx->Driver.GetBufferSize = MesaDriver::GetBufferSize; ctx->Driver.ResizeBuffers = _swrast_alloc_buffers; + ctx->Driver.GetBufferSize = MesaDriver::GetBufferSize; ctx->Driver.Accum = _swrast_Accum; ctx->Driver.Bitmap = _swrast_Bitmap; - ctx->Driver.ClearIndex = MesaDriver::ClearIndex; - ctx->Driver.ClearColor = MesaDriver::ClearColor; ctx->Driver.Clear = MesaDriver::Clear; + // ctx->Driver.ClearIndex = MesaDriver::ClearIndex; + // ctx->Driver.ClearColor = MesaDriver::ClearColor; ctx->Driver.CopyPixels = _swrast_CopyPixels; ctx->Driver.DrawPixels = _swrast_DrawPixels; ctx->Driver.ReadPixels = _swrast_ReadPixels; + ctx->Driver.DrawBuffer = _swrast_DrawBuffer; ctx->Driver.ChooseTextureFormat = _mesa_choose_tex_format; ctx->Driver.TexImage1D = _mesa_store_teximage1d; @@ -601,7 +614,14 @@ void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, GLvisual * visual, GLf ctx->Driver.TexSubImage3D = _mesa_store_texsubimage3d; ctx->Driver.TestProxyTexImage = _mesa_test_proxy_teximage; - ctx->Driver.CopyTexImage1D = _swrast_copy_teximage1d; + ctx->Driver.CompressedTexImage1D = _mesa_store_compressed_teximage1d; + ctx->Driver.CompressedTexImage2D = _mesa_store_compressed_teximage2d; + ctx->Driver.CompressedTexImage3D = _mesa_store_compressed_teximage3d; + ctx->Driver.CompressedTexSubImage1D = _mesa_store_compressed_texsubimage1d; + ctx->Driver.CompressedTexSubImage2D = _mesa_store_compressed_texsubimage2d; + ctx->Driver.CompressedTexSubImage3D = _mesa_store_compressed_texsubimage3d; + + ctx->Driver.CopyTexImage1D = _swrast_copy_teximage1d; ctx->Driver.CopyTexImage2D = _swrast_copy_teximage2d; ctx->Driver.CopyTexSubImage1D = _swrast_copy_texsubimage1d; ctx->Driver.CopyTexSubImage2D = _swrast_copy_texsubimage2d; @@ -610,19 +630,8 @@ void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, GLvisual * visual, GLf ctx->Driver.CopyColorSubTable = _swrast_CopyColorSubTable; ctx->Driver.CopyConvolutionFilter1D = _swrast_CopyConvolutionFilter1D; ctx->Driver.CopyConvolutionFilter2D = _swrast_CopyConvolutionFilter2D; - - ctx->Driver.CompressedTexImage1D = _mesa_store_compressed_teximage1d; - ctx->Driver.CompressedTexImage2D = _mesa_store_compressed_teximage2d; - ctx->Driver.CompressedTexImage3D = _mesa_store_compressed_teximage3d; - ctx->Driver.CompressedTexSubImage1D = _mesa_store_compressed_texsubimage1d; - ctx->Driver.CompressedTexSubImage2D = _mesa_store_compressed_texsubimage2d; - ctx->Driver.CompressedTexSubImage3D = _mesa_store_compressed_texsubimage3d; - + swdd->SetBuffer = MesaDriver::SetBuffer; - - tnl->Driver.RunPipeline = _tnl_run_pipeline; - - _swsetup_Wakeup(ctx); } @@ -898,7 +907,7 @@ const GLubyte *MesaDriver::GetString(GLcontext *ctx, GLenum name) // Plot a pixel. (0,0) is upper-left corner // This is only used when drawing to the front buffer. -static void Plot(BGLView *bglview, int x, int y) +inline void Plot(BGLView *bglview, int x, int y) { // XXX There's got to be a better way! BPoint p(x, y), q(x+1, y); diff --git a/src/mesa/drivers/beos/GLView.h b/src/mesa/drivers/beos/GLView.h new file mode 100644 index 0000000000..595000bb56 --- /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 + + + + + |