X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;ds=sidebyside;f=src%2Fblackberry%2Ffg_window_blackberry.c;h=e6876cf34ea353118ad31dcbc6c5ab86f1f8a46a;hb=cc3d0ca4db0793c3c3760d7b34dded07c396edf0;hp=08f66432649d7f472ecf1ed48b6590b3afa78ee4;hpb=1182304c390146ff4663bdfb410cf8cf9a4c600d;p=freeglut diff --git a/src/blackberry/fg_window_blackberry.c b/src/blackberry/fg_window_blackberry.c index 08f6643..e6876cf 100644 --- a/src/blackberry/fg_window_blackberry.c +++ b/src/blackberry/fg_window_blackberry.c @@ -43,83 +43,71 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title, GLboolean sizeUse, int w, int h, GLboolean gameMode, GLboolean isSubWindow ) { - /* TODO: only one full-screen window possible? */ - if (fgDisplay.pDisplay.single_native_window != NULL) { - fgWarning("You can't have more than one window on BlackBerry"); - return; - } - window->Window.pContext.event = NULL; //XXX Should probably be done elsewhere. Done here so there is no event at the moment - - /* Create window */ - if (screen_create_context(&window->Window.pContext.screenContext, 0)) { - fgError("Could not create screen context"); - return; - } - screen_window_t sWindow; - if (screen_create_window(&sWindow, window->Window.pContext.screenContext)) { - screen_destroy_context(window->Window.pContext.screenContext); - fgError("Could not create window"); - return; - } - fgDisplay.pDisplay.single_native_window = sWindow; - - /* Set window properties */ - int screenFormat = SCREEN_FORMAT_RGBA8888; + /* TODO: only one full-screen window possible? */ + if (fgDisplay.pDisplay.single_native_window != NULL) { + fgWarning("You can't have more than one window on BlackBerry"); + return; + } + + /* Create window */ + screen_window_t sWindow; + if (screen_create_window(&sWindow, fgDisplay.pDisplay.screenContext)) { + fgError("Could not create window"); + return; + } + fgDisplay.pDisplay.single_native_window = sWindow; + + /* Set window properties */ + int screenFormat = SCREEN_FORMAT_RGBA8888; //XXX Should this be determined by config? #ifdef GL_ES_VERSION_2_0 - int screenUsage = SCREEN_USAGE_OPENGL_ES2; + int screenUsage = SCREEN_USAGE_OPENGL_ES2; #elif GL_VERSION_ES_CM_1_0 || GL_VERSION_ES_CL_1_0 || GL_VERSION_ES_CM_1_1 || GL_VERSION_ES_CL_1_1 - int screenUsage = SCREEN_USAGE_OPENGL_ES1; + int screenUsage = SCREEN_USAGE_OPENGL_ES1; #endif #ifndef __X86__ - screenUsage |= SCREEN_USAGE_DISPLAY; // Physical device copy directly into physical display + screenUsage |= SCREEN_USAGE_DISPLAY; // Physical device copy directly into physical display #endif - if (screen_set_window_property_iv(sWindow, SCREEN_PROPERTY_FORMAT, &screenFormat)) { - screen_destroy_window(sWindow); - screen_destroy_context(window->Window.pContext.screenContext); - fgError("Could not set window format"); - return; - } - if (screen_set_window_property_iv(sWindow, SCREEN_PROPERTY_USAGE, &screenUsage)) { - screen_destroy_window(sWindow); - screen_destroy_context(window->Window.pContext.screenContext); - fgError("Could not set window usage"); - return; - } - - /* Could set size based on what is specified for window. Work on another time - int size[2]; - size[0] = w; - size[1] = h; - if (screen_set_window_property_iv(sWindow, SCREEN_PROPERTY_BUFFER_SIZE, size)) { - screen_destroy_window(sWindow); - screen_destroy_context(window->Window.pContext.screenContext); - fgError("Could not set window buffer size"); - return; - }*/ - - /* Create window buffers */ - if (screen_create_window_buffers(sWindow, 2)) { - screen_destroy_window(sWindow); - screen_destroy_context(window->Window.pContext.screenContext); - fgError("Could not create window buffers"); - return; - } - - /* Request window events */ - screen_request_events(window->Window.pContext.screenContext); - - /* Save window */ - window->Window.Handle = fgDisplay.pDisplay.single_native_window; - window->State.WorkMask |= GLUT_INIT_WORK; - - /* Create context */ - fghChooseConfig(&window->Window.pContext.egl.Config); - window->Window.Context = fghCreateNewContextEGL(window); - - /* Create EGL window */ - fghPlatformOpenWindowEGL(window); - - window->State.Visible = GL_TRUE; + if (screen_set_window_property_iv(sWindow, SCREEN_PROPERTY_FORMAT, &screenFormat)) { + screen_destroy_window(sWindow); + fgError("Could not set window format"); + return; + } + if (screen_set_window_property_iv(sWindow, SCREEN_PROPERTY_USAGE, &screenUsage)) { + screen_destroy_window(sWindow); + fgError("Could not set window usage"); + return; + } + + /* Could set size based on what is specified for window. Work on another time + int size[2]; + size[0] = w; + size[1] = h; + if (screen_set_window_property_iv(sWindow, SCREEN_PROPERTY_BUFFER_SIZE, size)) { + screen_destroy_window(sWindow); + fgError("Could not set window buffer size"); + return; + }*/ + + /* Create window buffers */ + if (screen_create_window_buffers(sWindow, (fgState.DisplayMode & GLUT_DOUBLE) ? 2 : 1)) { + screen_destroy_window(sWindow); + fgError("Could not create window buffers"); + return; + } + + /* Save window and set state */ + window->Window.Handle = fgDisplay.pDisplay.single_native_window; + window->State.WorkMask |= GLUT_INIT_WORK; + window->State.IsFullscreen = GL_TRUE; //XXX Always fullscreen for now + + /* Create context */ + fghChooseConfig(&window->Window.pContext.egl.Config); + window->Window.Context = fghCreateNewContextEGL(window); + + /* Create EGL window */ + fghPlatformOpenWindowEGL(window); + + window->State.Visible = GL_TRUE; } /* @@ -127,7 +115,7 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title, */ void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) { - fprintf(stderr, "fgPlatformReshapeWindow: STUB\n"); + fprintf(stderr, "fgPlatformReshapeWindow: STUB\n"); } /* @@ -135,13 +123,9 @@ void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) */ void fgPlatformCloseWindow( SFG_Window* window ) { - fghPlatformCloseWindowEGL(window); + fghPlatformCloseWindowEGL(window); - screen_stop_events(window->Window.pContext.screenContext); - - screen_destroy_window((screen_window_t)window->Window.Handle); - - screen_destroy_context(window->Window.pContext.screenContext); + screen_destroy_window((screen_window_t)window->Window.Handle); } /* @@ -149,7 +133,7 @@ void fgPlatformCloseWindow( SFG_Window* window ) */ void fgPlatformShowWindow( void ) { - fprintf(stderr, "fgPlatformShowWindow: STUB\n"); + fprintf(stderr, "fgPlatformShowWindow: STUB\n"); } /* @@ -157,7 +141,7 @@ void fgPlatformShowWindow( void ) */ void fgPlatformHideWindow( SFG_Window *window ) { - fprintf(stderr, "fgPlatformHideWindow: STUB\n"); + fprintf(stderr, "fgPlatformHideWindow: STUB\n"); } /* @@ -165,7 +149,8 @@ void fgPlatformHideWindow( SFG_Window *window ) */ void fgPlatformIconifyWindow( SFG_Window *window ) { - fprintf(stderr, "fgPlatformGlutIconifyWindow: STUB\n"); + //XXX This is possible via Cascades, but can't seem to find a C-level API + fprintf(stderr, "fgPlatformGlutIconifyWindow: STUB\n"); } /* @@ -173,7 +158,7 @@ void fgPlatformIconifyWindow( SFG_Window *window ) */ void fgPlatformGlutSetWindowTitle( const char* title ) { - fprintf(stderr, "fgPlatformGlutSetWindowTitle: STUB\n"); + fprintf(stderr, "fgPlatformGlutSetWindowTitle: STUB\n"); } /* @@ -181,14 +166,15 @@ void fgPlatformGlutSetWindowTitle( const char* title ) */ void fgPlatformGlutSetIconTitle( const char* title ) { - fprintf(stderr, "fgPlatformGlutSetIconTitle: STUB\n");} + fprintf(stderr, "fgPlatformGlutSetIconTitle: STUB\n"); +} /* * Change the specified window's position */ void fgPlatformPositionWindow( SFG_Window *window, int x, int y ) { - fprintf(stderr, "fgPlatformPositionWindow: STUB\n"); + fprintf(stderr, "fgPlatformPositionWindow: STUB\n"); } /* @@ -196,7 +182,7 @@ void fgPlatformPositionWindow( SFG_Window *window, int x, int y ) */ void fgPlatformPushWindow( SFG_Window *window ) { - fprintf(stderr, "fgPlatformPushWindow: STUB\n"); + fprintf(stderr, "fgPlatformPushWindow: STUB\n"); } /* @@ -204,7 +190,7 @@ void fgPlatformPushWindow( SFG_Window *window ) */ void fgPlatformPopWindow( SFG_Window *window ) { - fprintf(stderr, "fgPlatformPopWindow: STUB\n"); + fprintf(stderr, "fgPlatformPopWindow: STUB\n"); } /* @@ -212,5 +198,5 @@ void fgPlatformPopWindow( SFG_Window *window ) */ void fgPlatformFullScreenToggle( SFG_Window *win ) { - fprintf(stderr, "fgPlatformFullScreenToggle: STUB\n"); + fprintf(stderr, "fgPlatformFullScreenToggle: STUB\n"); }