mirror of
https://github.com/brl/mutter.git
synced 2024-12-28 05:42:14 +00:00
* clutter/win32/clutter-stage-win32.c:
* clutter/win32/clutter-backend-win32.c: Reflect changes to the GLX/X11 backend in revisions 2708-2709 and 2713-2715 which simplify the backend a little.
This commit is contained in:
parent
53e031210a
commit
8ef653a9e8
@ -1,3 +1,10 @@
|
||||
2008-05-15 Neil Roberts <neil@o-hand.com>
|
||||
|
||||
* clutter/win32/clutter-stage-win32.c:
|
||||
* clutter/win32/clutter-backend-win32.c: Reflect changes to the
|
||||
GLX/X11 backend in revisions 2708-2709 and 2713-2715 which
|
||||
simplify the backend a little.
|
||||
|
||||
2008-05-15 Emmanuele Bassi <ebassi@openedhand.com>
|
||||
|
||||
* clutter/x11/clutter-backend-x11.c:
|
||||
|
@ -116,6 +116,9 @@ clutter_backend_win32_dispose (GObject *gobject)
|
||||
CLUTTER_NOTE (BACKEND, "Removing the event source");
|
||||
_clutter_backend_win32_events_uninit (CLUTTER_BACKEND (backend_win32));
|
||||
|
||||
/* Unrealize all shaders, since the GL context is going away */
|
||||
_clutter_shader_release_all ();
|
||||
|
||||
if (backend_win32->gl_context)
|
||||
{
|
||||
wglDeleteContext (backend_win32->gl_context);
|
||||
@ -313,33 +316,13 @@ clutter_backend_win32_create_stage (ClutterBackend *backend,
|
||||
CLUTTER_NOTE (BACKEND, "Creating stage of type `%s'",
|
||||
g_type_name (CLUTTER_STAGE_TYPE));
|
||||
|
||||
stage = g_object_new (CLUTTER_STAGE_TYPE, NULL);
|
||||
stage = g_object_new (CLUTTER_TYPE_STAGE_WIN32, NULL);
|
||||
|
||||
/* copy backend data into the stage */
|
||||
stage_win32 = CLUTTER_STAGE_WIN32 (stage);
|
||||
stage_win32->backend = backend_win32;
|
||||
stage_win32->wrapper = wrapper;
|
||||
|
||||
/* set the pointer back into the wrapper */
|
||||
_clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (stage));
|
||||
|
||||
/* needed ? */
|
||||
g_object_set_data (G_OBJECT (stage), "clutter-backend", backend);
|
||||
|
||||
/* FIXME - is this needed? we should call realize inside the clutter
|
||||
* init sequence for the default stage, and let the usual realization
|
||||
* sequence be used for any other stage
|
||||
*/
|
||||
clutter_actor_realize (stage);
|
||||
|
||||
if (!CLUTTER_ACTOR_IS_REALIZED (stage))
|
||||
{
|
||||
g_set_error (error, CLUTTER_INIT_ERROR,
|
||||
CLUTTER_INIT_ERROR_INTERNAL,
|
||||
"Unable to realize the main stage");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return stage;
|
||||
}
|
||||
|
||||
|
@ -61,8 +61,7 @@ clutter_stage_win32_show (ClutterActor *actor)
|
||||
if (stage_win32->hwnd)
|
||||
ShowWindow (stage_win32->hwnd, SW_SHOW);
|
||||
|
||||
/* chain up */
|
||||
CLUTTER_ACTOR_CLASS (clutter_stage_win32_parent_class)->show (actor);
|
||||
CLUTTER_ACTOR_SET_FLAGS (actor, CLUTTER_ACTOR_MAPPED);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -70,11 +69,10 @@ clutter_stage_win32_hide (ClutterActor *actor)
|
||||
{
|
||||
ClutterStageWin32 *stage_win32 = CLUTTER_STAGE_WIN32 (actor);
|
||||
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_MAPPED);
|
||||
|
||||
if (stage_win32->hwnd)
|
||||
ShowWindow (stage_win32->hwnd, SW_HIDE);
|
||||
|
||||
/* chain up */
|
||||
CLUTTER_ACTOR_CLASS (clutter_stage_win32_parent_class)->hide (actor);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -426,10 +424,7 @@ clutter_stage_win32_realize (ClutterActor *actor)
|
||||
if (window_class == 0)
|
||||
{
|
||||
g_critical ("Unable to register window class");
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (stage_win32->wrapper,
|
||||
CLUTTER_ACTOR_REALIZED);
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REALIZED);
|
||||
return;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* If we're in fullscreen mode then use the fullscreen rect
|
||||
@ -470,10 +465,7 @@ clutter_stage_win32_realize (ClutterActor *actor)
|
||||
if (stage_win32->hwnd == NULL)
|
||||
{
|
||||
g_critical ("Unable to create stage window");
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (stage_win32->wrapper,
|
||||
CLUTTER_ACTOR_REALIZED);
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REALIZED);
|
||||
return;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Get the position in case CW_USEDEFAULT was specified */
|
||||
@ -513,10 +505,7 @@ clutter_stage_win32_realize (ClutterActor *actor)
|
||||
|| !SetPixelFormat (stage_win32->client_dc, pf, &pfd))
|
||||
{
|
||||
g_critical ("Unable to find suitable GL pixel format");
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (stage_win32->wrapper,
|
||||
CLUTTER_ACTOR_REALIZED);
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REALIZED);
|
||||
return;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (backend_win32->gl_context == NULL)
|
||||
@ -526,30 +515,26 @@ clutter_stage_win32_realize (ClutterActor *actor)
|
||||
if (backend_win32->gl_context == NULL)
|
||||
{
|
||||
g_critical ("Unable to create suitable GL context");
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (stage_win32->wrapper,
|
||||
CLUTTER_ACTOR_REALIZED);
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REALIZED);
|
||||
return;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Make the context current so we can check the GL version */
|
||||
wglMakeCurrent (stage_win32->client_dc, backend_win32->gl_context);
|
||||
|
||||
if (!clutter_stage_win32_check_gl_version ())
|
||||
{
|
||||
g_critical ("OpenGL version number is too low");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
/* below will call wglMakeCurrent */
|
||||
CLUTTER_ACTOR_SET_FLAGS (stage_win32->wrapper, CLUTTER_ACTOR_REALIZED);
|
||||
CLUTTER_NOTE (BACKEND, "Marking stage as realized");
|
||||
CLUTTER_ACTOR_SET_FLAGS (stage_win32, CLUTTER_ACTOR_REALIZED);
|
||||
clutter_stage_ensure_current (stage_win32->wrapper);
|
||||
|
||||
if (!clutter_stage_win32_check_gl_version ())
|
||||
{
|
||||
g_critical ("OpenGL version number is too low");
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (stage_win32->wrapper,
|
||||
CLUTTER_ACTOR_REALIZED);
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REALIZED);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Make sure the viewport gets set up correctly */
|
||||
CLUTTER_SET_PRIVATE_FLAGS (stage_win32->wrapper,
|
||||
CLUTTER_ACTOR_SYNC_MATRICES);
|
||||
return;
|
||||
|
||||
fail:
|
||||
CLUTTER_ACTOR_UNSET_FLAGS (actor, CLUTTER_ACTOR_REALIZED);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -564,12 +549,6 @@ clutter_stage_win32_unrealize (ClutterActor *actor)
|
||||
*/
|
||||
CLUTTER_ACTOR_CLASS (clutter_stage_win32_parent_class)->unrealize (actor);
|
||||
|
||||
/* Unrealize all shaders, since the GL context is going away */
|
||||
_clutter_shader_release_all ();
|
||||
|
||||
/* As unrealised the context will now get cleared */
|
||||
clutter_stage_ensure_current (stage_win32->wrapper);
|
||||
|
||||
if (stage_win32->client_dc)
|
||||
{
|
||||
ReleaseDC (stage_win32->hwnd, stage_win32->client_dc);
|
||||
|
Loading…
Reference in New Issue
Block a user