2008-06-25 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-backend.h: * clutter/clutter-backend.c: (clutter_backend_get_display_size): Add a function for getting the display size out of the backend. * clutter/clutter-stage.c: (clutter_stage_allocate): When allocating on a backend with a static stage, we simply ignore the passed box and override it with the size of the display. * clutter/eglnative/clutter-backend-egl.c: (clutter_backend_egl_get_display_size), (clutter_backend_egl_class_init): Implement get_display_size() by returning the size of the EGL surface. * clutter/fruity/clutter-backend-fruity.c: (clutter_backend_egl_get_display_size), (clutter_backend_egl_class_init): Ditto as above. * clutter/x11/clutter-backend-x11.c: (clutter_backend_x11_get_display_size), (clutter_backend_x11_class_init): Implement get_display_size() by returning the DisplayWidth and DisplayHeight of the current screen.
This commit is contained in:
parent
1049959d34
commit
8008bfea25
27
ChangeLog
27
ChangeLog
@ -1,3 +1,30 @@
|
|||||||
|
2008-06-25 Emmanuele Bassi <ebassi@openedhand.com>
|
||||||
|
|
||||||
|
* clutter/clutter-backend.h:
|
||||||
|
* clutter/clutter-backend.c:
|
||||||
|
(clutter_backend_get_display_size): Add a function for getting the
|
||||||
|
display size out of the backend.
|
||||||
|
|
||||||
|
* clutter/clutter-stage.c:
|
||||||
|
(clutter_stage_allocate): When allocating on a backend with a
|
||||||
|
static stage, we simply ignore the passed box and override it with
|
||||||
|
the size of the display.
|
||||||
|
|
||||||
|
* clutter/eglnative/clutter-backend-egl.c:
|
||||||
|
(clutter_backend_egl_get_display_size),
|
||||||
|
(clutter_backend_egl_class_init): Implement get_display_size() by
|
||||||
|
returning the size of the EGL surface.
|
||||||
|
|
||||||
|
* clutter/fruity/clutter-backend-fruity.c:
|
||||||
|
(clutter_backend_egl_get_display_size),
|
||||||
|
(clutter_backend_egl_class_init): Ditto as above.
|
||||||
|
|
||||||
|
* clutter/x11/clutter-backend-x11.c:
|
||||||
|
(clutter_backend_x11_get_display_size),
|
||||||
|
(clutter_backend_x11_class_init): Implement get_display_size() by
|
||||||
|
returning the DisplayWidth and DisplayHeight of the current
|
||||||
|
screen.
|
||||||
|
|
||||||
2008-06-25 Neil Roberts <neil@o-hand.com>
|
2008-06-25 Neil Roberts <neil@o-hand.com>
|
||||||
|
|
||||||
* clutter/win32/clutter-stage-win32.c
|
* clutter/win32/clutter-stage-win32.c
|
||||||
|
@ -481,3 +481,27 @@ clutter_backend_get_font_options (ClutterBackend *backend)
|
|||||||
|
|
||||||
return priv->font_options;
|
return priv->font_options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
clutter_backend_get_display_size (ClutterBackend *backend,
|
||||||
|
gint *width,
|
||||||
|
gint *height)
|
||||||
|
{
|
||||||
|
ClutterBackendClass *klass;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_BACKEND (backend));
|
||||||
|
|
||||||
|
klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
||||||
|
if (!klass->get_display_size)
|
||||||
|
{
|
||||||
|
if (width)
|
||||||
|
*width = 0;
|
||||||
|
|
||||||
|
if (height)
|
||||||
|
*height = 0;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
klass->get_display_size (backend, width, height);
|
||||||
|
}
|
||||||
|
@ -75,6 +75,9 @@ struct _ClutterBackendClass
|
|||||||
ClutterStage *stage);
|
ClutterStage *stage);
|
||||||
void (* ensure_context) (ClutterBackend *backend,
|
void (* ensure_context) (ClutterBackend *backend,
|
||||||
ClutterStage *stage);
|
ClutterStage *stage);
|
||||||
|
void (* get_display_size) (ClutterBackend *backend,
|
||||||
|
gint *width,
|
||||||
|
gint *height);
|
||||||
};
|
};
|
||||||
|
|
||||||
GType clutter_backend_get_type (void) G_GNUC_CONST;
|
GType clutter_backend_get_type (void) G_GNUC_CONST;
|
||||||
@ -93,6 +96,9 @@ guint clutter_backend_get_double_click_distance (ClutterBackend
|
|||||||
void clutter_backend_set_font_options (ClutterBackend *backend,
|
void clutter_backend_set_font_options (ClutterBackend *backend,
|
||||||
cairo_font_options_t *options);
|
cairo_font_options_t *options);
|
||||||
cairo_font_options_t *clutter_backend_get_font_options (ClutterBackend *backend);
|
cairo_font_options_t *clutter_backend_get_font_options (ClutterBackend *backend);
|
||||||
|
void clutter_backend_get_display_size (ClutterBackend *backend,
|
||||||
|
gint *width,
|
||||||
|
gint *height);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -161,8 +161,8 @@ clutter_stage_allocate (ClutterActor *self,
|
|||||||
g_assert (priv->impl != NULL);
|
g_assert (priv->impl != NULL);
|
||||||
|
|
||||||
/* if the stage is fixed size (for instance, it's using a frame-buffer)
|
/* if the stage is fixed size (for instance, it's using a frame-buffer)
|
||||||
* then we simply ignore any allocation request and interrupt the
|
* then we simply ignore any allocation request and override the
|
||||||
* allocation chain here.
|
* allocation chain.
|
||||||
*/
|
*/
|
||||||
if (!clutter_feature_available (CLUTTER_FEATURE_STAGE_STATIC))
|
if (!clutter_feature_available (CLUTTER_FEATURE_STAGE_STATIC))
|
||||||
{
|
{
|
||||||
@ -174,6 +174,26 @@ clutter_stage_allocate (ClutterActor *self,
|
|||||||
klass = CLUTTER_ACTOR_GET_CLASS (priv->impl);
|
klass = CLUTTER_ACTOR_GET_CLASS (priv->impl);
|
||||||
klass->allocate (priv->impl, box, origin_changed);
|
klass->allocate (priv->impl, box, origin_changed);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClutterActorBox override = { 0, };
|
||||||
|
ClutterBackend *backend = clutter_get_default_backend ();
|
||||||
|
gint display_width, display_height;
|
||||||
|
ClutterActorClass *klass;
|
||||||
|
|
||||||
|
display_width = display_height = 0;
|
||||||
|
clutter_backend_get_display_size (backend,
|
||||||
|
&display_width,
|
||||||
|
&display_height);
|
||||||
|
|
||||||
|
override.x1 = 0;
|
||||||
|
override.y1 = 0;
|
||||||
|
override.x2 = CLUTTER_UNITS_FROM_DEVICE (display_width);
|
||||||
|
override.y2 = CLUTTER_UNITS_FROM_DEVICE (display_height);
|
||||||
|
|
||||||
|
klass = CLUTTER_ACTOR_CLASS (clutter_stage_parent_class);
|
||||||
|
klass->allocate (self, &override, origin_changed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -197,6 +197,33 @@ clutter_backend_egl_get_features (ClutterBackend *backend)
|
|||||||
return CLUTTER_FEATURE_STAGE_STATIC;
|
return CLUTTER_FEATURE_STAGE_STATIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_backend_egl_get_display_size (ClutterBackend *backend,
|
||||||
|
gint *width,
|
||||||
|
gint *height)
|
||||||
|
{
|
||||||
|
ClutterBackendEGL *backend_egl = CLUTTER_BACKEND_EGL (backend);
|
||||||
|
gint surface_width, surface_height;
|
||||||
|
|
||||||
|
if (backend_egl->stage)
|
||||||
|
{
|
||||||
|
ClutterStageEgl *stage_egl;
|
||||||
|
|
||||||
|
stage_egl = CLUTTER_STAGE_EGL (backend_egl->stage);
|
||||||
|
|
||||||
|
surface_width = stage_egl->surface_width;
|
||||||
|
surface_height = stage_egl->surface_height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
surface_width = surface_height = 0;
|
||||||
|
|
||||||
|
if (width)
|
||||||
|
*width = surface_width;
|
||||||
|
|
||||||
|
if (height)
|
||||||
|
*height = surface_height;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
||||||
{
|
{
|
||||||
@ -214,6 +241,7 @@ clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
|||||||
backend_class->ensure_context = clutter_backend_egl_ensure_context;
|
backend_class->ensure_context = clutter_backend_egl_ensure_context;
|
||||||
backend_class->redraw = clutter_backend_egl_redraw;
|
backend_class->redraw = clutter_backend_egl_redraw;
|
||||||
backend_class->get_features = clutter_backend_egl_get_features;
|
backend_class->get_features = clutter_backend_egl_get_features;
|
||||||
|
backend_class->get_display_size = clutter_backend_egl_get_display_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -190,6 +190,33 @@ clutter_backend_egl_get_features (ClutterBackend *backend)
|
|||||||
return CLUTTER_FEATURE_STAGE_STATIC;
|
return CLUTTER_FEATURE_STAGE_STATIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_backend_egl_get_display_size (ClutterBackend *backend,
|
||||||
|
gint *width,
|
||||||
|
gint *height)
|
||||||
|
{
|
||||||
|
ClutterBackendEGL *backend_egl = CLUTTER_BACKEND_EGL (backend);
|
||||||
|
gint surface_width, surface_height;
|
||||||
|
|
||||||
|
if (backend_egl->stage)
|
||||||
|
{
|
||||||
|
ClutterStageEgl *stage_egl;
|
||||||
|
|
||||||
|
stage_egl = CLUTTER_STAGE_EGL (backend_egl->stage);
|
||||||
|
|
||||||
|
surface_width = stage_egl->surface_width;
|
||||||
|
surface_height = stage_egl->surface_height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
surface_width = surface_height = 0;
|
||||||
|
|
||||||
|
if (width)
|
||||||
|
*width = surface_width;
|
||||||
|
|
||||||
|
if (height)
|
||||||
|
*height = surface_height;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
||||||
{
|
{
|
||||||
@ -207,6 +234,7 @@ clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
|||||||
backend_class->ensure_context = clutter_backend_egl_ensure_context;
|
backend_class->ensure_context = clutter_backend_egl_ensure_context;
|
||||||
backend_class->redraw = clutter_backend_egl_redraw;
|
backend_class->redraw = clutter_backend_egl_redraw;
|
||||||
backend_class->get_features = clutter_backend_egl_get_features;
|
backend_class->get_features = clutter_backend_egl_get_features;
|
||||||
|
backend_class->get_display_size = clutter_backend_egl_get_display_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -311,6 +311,31 @@ clutter_backend_x11_get_features (ClutterBackend *backend)
|
|||||||
return CLUTTER_FEATURE_STAGE_USER_RESIZE | CLUTTER_FEATURE_STAGE_CURSOR;
|
return CLUTTER_FEATURE_STAGE_USER_RESIZE | CLUTTER_FEATURE_STAGE_CURSOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_backend_x11_get_display_size (ClutterBackend *backend,
|
||||||
|
gint *width,
|
||||||
|
gint *height)
|
||||||
|
{
|
||||||
|
ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend);
|
||||||
|
gint display_width, display_height;
|
||||||
|
|
||||||
|
if (G_LIKELY (backend_x11->xdpy))
|
||||||
|
{
|
||||||
|
display_width = DisplayWidth (backend_x11->xdpy,
|
||||||
|
backend_x11->xscreen_num);
|
||||||
|
display_height = DisplayHeight (backend_x11->xdpy,
|
||||||
|
backend_x11->xscreen_num);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
display_width = display_height = 0;
|
||||||
|
|
||||||
|
if (width)
|
||||||
|
*width = display_width;
|
||||||
|
|
||||||
|
if (height)
|
||||||
|
*height = display_height;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_backend_x11_class_init (ClutterBackendX11Class *klass)
|
clutter_backend_x11_class_init (ClutterBackendX11Class *klass)
|
||||||
{
|
{
|
||||||
@ -326,6 +351,7 @@ clutter_backend_x11_class_init (ClutterBackendX11Class *klass)
|
|||||||
backend_class->init_events = clutter_backend_x11_init_events;
|
backend_class->init_events = clutter_backend_x11_init_events;
|
||||||
backend_class->add_options = clutter_backend_x11_add_options;
|
backend_class->add_options = clutter_backend_x11_add_options;
|
||||||
backend_class->get_features = clutter_backend_x11_get_features;
|
backend_class->get_features = clutter_backend_x11_get_features;
|
||||||
|
backend_class->get_display_size = clutter_backend_x11_get_display_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user