[PATCH xserver 2/5] ephyr: Don't configure window while responding to configure events

Antoine Martin antoine at nagafix.co.uk
Thu Jul 7 16:58:35 UTC 2016


On 14/06/16 23:02, Keith Packard wrote:
> This leads to and endless sequence of window resizes.
> 
> Signed-off-by: Keith Packard <keithp at keithp.com>
Tested-by: Antoine Martin <antoine at nagafix.co.uk>

Can we get this one into the stable queue?
It applies cleanly to 1.18 and fixes a bug that's quite easy to trigger.

Thanks
Antoine


> ---
>  hw/kdrive/ephyr/ephyr.c | 2 ++
>  hw/kdrive/ephyr/hostx.c | 8 ++++++++
>  hw/kdrive/ephyr/hostx.h | 3 +++
>  3 files changed, 13 insertions(+)
> 
> diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
> index 2114c1c..2bc5ccc 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 cdb12b0..d84c33b 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 96d7394..6e0b07b 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);
>  
> 



More information about the xorg-devel mailing list