diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c index 2114c1c32..2bc5ccc58 100644 --- a/hw/kdrive/ephyr/ephyr.c +++ b/hw/kdrive/ephyr/ephyr.c @@ -613,7 +613,9 @@ ephyrResizeScreen (ScreenPtr pScreen, size.width = newwidth; size.height = newheight; + hostx_size_set_from_configure(TRUE); ret = ephyrRandRSetConfig (pScreen, screen->randr, 0, &size); + hostx_size_set_from_configure(FALSE); if (ret) { RROutputPtr output; diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c index cdb12b0e6..d84c33b2a 100644 --- a/hw/kdrive/ephyr/hostx.c +++ b/hw/kdrive/ephyr/hostx.c @@ -79,6 +79,7 @@ struct EphyrHostXVars { KdScreenInfo **screens; long damage_debug_msec; + Bool size_set_from_configure; }; /* memset ( missing> ) instead of below */ @@ -878,6 +879,7 @@ hostx_screen_init(KdScreenInfo *screen, xallocarray(scrpriv->ximg->stride, buffer_height); } + if (!HostX.size_set_from_configure) { uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; uint32_t values[2] = {width, height}; @@ -1213,6 +1215,12 @@ hostx_load_keymap(KeySymsPtr keySyms, CARD8 *modmap, XkbControlsPtr controls) return TRUE; } +void +hostx_size_set_from_configure(Bool ss) +{ + HostX.size_set_from_configure = ss; +} + xcb_connection_t * hostx_get_xcbconn(void) { diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h index 96d73948b..6e0b07ba0 100644 --- a/hw/kdrive/ephyr/hostx.h +++ b/hw/kdrive/ephyr/hostx.h @@ -151,6 +151,9 @@ hostx_paint_rect(KdScreenInfo *screen, Bool hostx_load_keymap(KeySymsPtr keySyms, CARD8 *modmap, XkbControlsPtr controls); +void +hostx_size_set_from_configure(Bool); + xcb_connection_t * hostx_get_xcbconn(void);