[x11] Don't set actor size on ConfigureNotify
Calling clutter_actor_set_size in response to ConfigureNotify makes setting the size of the stage racy - the most common result of which seems to be that you can't set the stage dimensions to anything less than 640x480. Instead, add a first_allocation bit to the private structure of the X11 stage and force the first resize (necessary or the default stage will be a 1x1 window).
This commit is contained in:
parent
cea9de7f04
commit
29cc027f06
@ -485,10 +485,6 @@ event_translate (ClutterBackend *backend,
|
||||
xevent->xconfigure.width,
|
||||
xevent->xconfigure.height);
|
||||
|
||||
clutter_actor_set_size (CLUTTER_ACTOR (stage),
|
||||
xevent->xconfigure.width,
|
||||
xevent->xconfigure.height);
|
||||
|
||||
CLUTTER_UNSET_PRIVATE_FLAGS (stage_x11->wrapper,
|
||||
CLUTTER_STAGE_IN_RESIZE);
|
||||
|
||||
|
@ -220,10 +220,12 @@ clutter_stage_x11_resize (ClutterStageWindow *stage_window,
|
||||
CLUTTER_NOTE (BACKEND, "New size received: (%d, %d)", width, height);
|
||||
|
||||
if (width != stage_x11->xwin_width ||
|
||||
height != stage_x11->xwin_height)
|
||||
height != stage_x11->xwin_height ||
|
||||
stage_x11->first_allocation)
|
||||
{
|
||||
stage_x11->xwin_width = width;
|
||||
stage_x11->xwin_height = height;
|
||||
stage_x11->first_allocation = FALSE;
|
||||
|
||||
if (stage_x11->xwin != None && !stage_x11->is_foreign_xwin)
|
||||
{
|
||||
@ -659,6 +661,7 @@ clutter_stage_x11_init (ClutterStageX11 *stage)
|
||||
stage->xwin = None;
|
||||
stage->xwin_width = 640;
|
||||
stage->xwin_height = 480;
|
||||
stage->first_allocation = TRUE;
|
||||
|
||||
stage->wm_state = STAGE_X11_WITHDRAWN;
|
||||
|
||||
|
@ -54,6 +54,7 @@ struct _ClutterStageX11
|
||||
guint fullscreen_on_map : 1;
|
||||
guint is_cursor_visible : 1;
|
||||
guint viewport_initialized : 1;
|
||||
guint first_allocation : 1;
|
||||
|
||||
Window xwin;
|
||||
gint xwin_width;
|
||||
|
Loading…
Reference in New Issue
Block a user