From d651cc4337c9ca788bd276736fd44aaed557a32d Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 25 Jun 2008 13:32:03 +0000 Subject: [PATCH] 2008-06-25 Emmanuele Bassi * clutter/clutter-backend.c: (clutter_backend_get_display_size): Provide a fallback for backends not implementing get_display_size(). * clutter/clutter-stage.c: (clutter_stage_allocate): Add debug messages. * clutter/sdl/clutter-backend-sdl.c: (clutter_backend_sdl_get_display_size), (clutter_backend_sdl_class_init): Implement get_display_size() on the SDL backend. --- ChangeLog | 14 +++++++++++++ clutter/clutter-backend.c | 16 +++++++++++---- clutter/clutter-stage.c | 16 ++++++++++++--- clutter/sdl/clutter-backend-sdl.c | 41 ++++++++++++++++++++++++++++++++------- 4 files changed, 73 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47fcec6..79b2e3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2008-06-25 Emmanuele Bassi + + * clutter/clutter-backend.c: + (clutter_backend_get_display_size): Provide a fallback for + backends not implementing get_display_size(). + + * clutter/clutter-stage.c: + (clutter_stage_allocate): Add debug messages. + + * clutter/sdl/clutter-backend-sdl.c: + (clutter_backend_sdl_get_display_size), + (clutter_backend_sdl_class_init): Implement get_display_size() + on the SDL backend. + 2008-06-25 Chris Lord * clutter/clutter-fixed.c: (clutter_sinx): diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 4ccaed1..114ae02 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -482,6 +482,16 @@ clutter_backend_get_font_options (ClutterBackend *backend) return priv->font_options; } +/** + * clutter_backend_get_display_size: + * @backend: a #ClutterBackend + * @width: return location for the display width in pixels, or %NULL + * @height: return location for the display height in pixels, or %NULL + * + * Retrieves the size of the display from the #ClutterBackend. + * + * Since: 0.8 + */ void clutter_backend_get_display_size (ClutterBackend *backend, gint *width, @@ -499,9 +509,7 @@ clutter_backend_get_display_size (ClutterBackend *backend, if (height) *height = 0; - - return; } - - klass->get_display_size (backend, width, height); + else + klass->get_display_size (backend, width, height); } diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c index 0c9ef1b..0fa0e61 100644 --- a/clutter/clutter-stage.c +++ b/clutter/clutter-stage.c @@ -152,9 +152,9 @@ clutter_stage_get_preferred_height (ClutterActor *self, natural_height_p); } static void -clutter_stage_allocate (ClutterActor *self, - const ClutterActorBox *box, - gboolean origin_changed) +clutter_stage_allocate (ClutterActor *self, + const ClutterActorBox *box, + gboolean origin_changed) { ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv; @@ -168,6 +168,11 @@ clutter_stage_allocate (ClutterActor *self, { ClutterActorClass *klass; + CLUTTER_NOTE (ACTOR, "Following allocation to %dx%d (origin %s)", + CLUTTER_UNITS_TO_DEVICE (box->x2 - box->x1), + CLUTTER_UNITS_TO_DEVICE (box->y2 - box->y1), + origin_changed ? "changed" : "not changed"); + klass = CLUTTER_ACTOR_CLASS (clutter_stage_parent_class); klass->allocate (self, box, origin_changed); @@ -191,6 +196,11 @@ clutter_stage_allocate (ClutterActor *self, override.x2 = CLUTTER_UNITS_FROM_DEVICE (display_width); override.y2 = CLUTTER_UNITS_FROM_DEVICE (display_height); + CLUTTER_NOTE (ACTOR, "Overriding allocation to %dx%d (origin: %s)", + display_width, + display_height, + origin_changed ? "changed" : "not changed"); + klass = CLUTTER_ACTOR_CLASS (clutter_stage_parent_class); klass->allocate (self, &override, origin_changed); } diff --git a/clutter/sdl/clutter-backend-sdl.c b/clutter/sdl/clutter-backend-sdl.c index b81b43a..b529366 100644 --- a/clutter/sdl/clutter-backend-sdl.c +++ b/clutter/sdl/clutter-backend-sdl.c @@ -168,6 +168,32 @@ clutter_backend_sdl_get_features (ClutterBackend *backend) } static void +clutter_backend_sdl_get_display_size (ClutterBackend *backend, + gint *width, + gint *height) +{ + SDL_Surface *surface; + + surface = SDL_GetVideoSurface (); + if (!surface) + { + if (width) + *width = 0; + + if (height) + *height = 0; + } + else + { + if (width) + *width = surface->w; + + if (height) + *height = surface->h; + } +} + +static void clutter_backend_sdl_class_init (ClutterBackendSDLClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); @@ -177,13 +203,14 @@ clutter_backend_sdl_class_init (ClutterBackendSDLClass *klass) gobject_class->dispose = clutter_backend_sdl_dispose; gobject_class->finalize = clutter_backend_sdl_finalize; - backend_class->pre_parse = clutter_backend_sdl_pre_parse; - backend_class->post_parse = clutter_backend_sdl_post_parse; - backend_class->init_events = clutter_backend_sdl_init_events; - backend_class->create_stage = clutter_backend_sdl_create_stage; - backend_class->ensure_context = clutter_backend_sdl_ensure_context; - backend_class->redraw = clutter_backend_sdl_redraw; - backend_class->get_features = clutter_backend_sdl_get_features; + backend_class->pre_parse = clutter_backend_sdl_pre_parse; + backend_class->post_parse = clutter_backend_sdl_post_parse; + backend_class->init_events = clutter_backend_sdl_init_events; + backend_class->create_stage = clutter_backend_sdl_create_stage; + backend_class->ensure_context = clutter_backend_sdl_ensure_context; + backend_class->redraw = clutter_backend_sdl_redraw; + backend_class->get_features = clutter_backend_sdl_get_features; + backend_class->get_display_size = clutter_backend_sdl_get_display_size; } static void -- 2.7.4