2008-06-25 Emmanuele Bassi <ebassi@openedhand.com>

* 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.
This commit is contained in:
Emmanuele Bassi 2008-06-25 13:32:03 +00:00
parent 631277be44
commit d651cc4337
4 changed files with 73 additions and 14 deletions

View File

@ -1,3 +1,17 @@
2008-06-25 Emmanuele Bassi <ebassi@openedhand.com>
* 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 <chris@openedhand.com> 2008-06-25 Chris Lord <chris@openedhand.com>
* clutter/clutter-fixed.c: (clutter_sinx): * clutter/clutter-fixed.c: (clutter_sinx):

View File

@ -482,6 +482,16 @@ clutter_backend_get_font_options (ClutterBackend *backend)
return priv->font_options; 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 void
clutter_backend_get_display_size (ClutterBackend *backend, clutter_backend_get_display_size (ClutterBackend *backend,
gint *width, gint *width,
@ -499,9 +509,7 @@ clutter_backend_get_display_size (ClutterBackend *backend,
if (height) if (height)
*height = 0; *height = 0;
return;
} }
else
klass->get_display_size (backend, width, height); klass->get_display_size (backend, width, height);
} }

View File

@ -152,9 +152,9 @@ clutter_stage_get_preferred_height (ClutterActor *self,
natural_height_p); natural_height_p);
} }
static void static void
clutter_stage_allocate (ClutterActor *self, clutter_stage_allocate (ClutterActor *self,
const ClutterActorBox *box, const ClutterActorBox *box,
gboolean origin_changed) gboolean origin_changed)
{ {
ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv; ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv;
@ -168,6 +168,11 @@ clutter_stage_allocate (ClutterActor *self,
{ {
ClutterActorClass *klass; 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 = CLUTTER_ACTOR_CLASS (clutter_stage_parent_class);
klass->allocate (self, box, origin_changed); klass->allocate (self, box, origin_changed);
@ -191,6 +196,11 @@ clutter_stage_allocate (ClutterActor *self,
override.x2 = CLUTTER_UNITS_FROM_DEVICE (display_width); override.x2 = CLUTTER_UNITS_FROM_DEVICE (display_width);
override.y2 = CLUTTER_UNITS_FROM_DEVICE (display_height); 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 = CLUTTER_ACTOR_CLASS (clutter_stage_parent_class);
klass->allocate (self, &override, origin_changed); klass->allocate (self, &override, origin_changed);
} }

View File

@ -167,6 +167,32 @@ clutter_backend_sdl_get_features (ClutterBackend *backend)
return CLUTTER_FEATURE_STAGE_CURSOR; return CLUTTER_FEATURE_STAGE_CURSOR;
} }
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 static void
clutter_backend_sdl_class_init (ClutterBackendSDLClass *klass) clutter_backend_sdl_class_init (ClutterBackendSDLClass *klass)
{ {
@ -177,13 +203,14 @@ clutter_backend_sdl_class_init (ClutterBackendSDLClass *klass)
gobject_class->dispose = clutter_backend_sdl_dispose; gobject_class->dispose = clutter_backend_sdl_dispose;
gobject_class->finalize = clutter_backend_sdl_finalize; gobject_class->finalize = clutter_backend_sdl_finalize;
backend_class->pre_parse = clutter_backend_sdl_pre_parse; backend_class->pre_parse = clutter_backend_sdl_pre_parse;
backend_class->post_parse = clutter_backend_sdl_post_parse; backend_class->post_parse = clutter_backend_sdl_post_parse;
backend_class->init_events = clutter_backend_sdl_init_events; backend_class->init_events = clutter_backend_sdl_init_events;
backend_class->create_stage = clutter_backend_sdl_create_stage; backend_class->create_stage = clutter_backend_sdl_create_stage;
backend_class->ensure_context = clutter_backend_sdl_ensure_context; backend_class->ensure_context = clutter_backend_sdl_ensure_context;
backend_class->redraw = clutter_backend_sdl_redraw; backend_class->redraw = clutter_backend_sdl_redraw;
backend_class->get_features = clutter_backend_sdl_get_features; backend_class->get_features = clutter_backend_sdl_get_features;
backend_class->get_display_size = clutter_backend_sdl_get_display_size;
} }
static void static void