Previous code assumed we were always 32bpp, so root window paint walked off the end of the XImage and things went boom.
Signed-off-by: Adam Jackson <[email protected]> --- hw/kdrive/ephyr/ephyr.c | 3 ++- hw/kdrive/ephyr/hostx.c | 7 ++++--- hw/kdrive/ephyr/hostx.h | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c index 8096a24..8943de3 100644 --- a/hw/kdrive/ephyr/ephyr.c +++ b/hw/kdrive/ephyr/ephyr.c @@ -256,7 +256,8 @@ ephyrMapFramebuffer (KdScreenInfo *screen) buffer_height = ephyrBufferHeight(screen); - priv->base = hostx_screen_init (screen, screen->width, screen->height, buffer_height); + priv->base = hostx_screen_init (screen, screen->width, screen->height, buffer_height, + &screen->fb.bitsPerPixel); if ((scrpriv->randr & RR_Rotate_0) && !(scrpriv->randr & RR_Reflect_All)) { diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c index 2ebeca9..cb72587 100644 --- a/hw/kdrive/ephyr/hostx.c +++ b/hw/kdrive/ephyr/hostx.c @@ -636,9 +636,8 @@ hostx_set_cmap_entry(unsigned char idx, * by fakexa for storing offscreen pixmap data. */ void* -hostx_screen_init (EphyrScreenInfo screen, - int width, int height, - int buffer_height) +hostx_screen_init (EphyrScreenInfo screen, int width, int height, + int buffer_height, int *bpp) { int bitmap_pad; Bool shm_success = False; @@ -724,6 +723,8 @@ hostx_screen_init (EphyrScreenInfo screen, malloc (host_screen->ximg->bytes_per_line * buffer_height); } + *bpp = host_screen->ximg->bits_per_pixel; + XResizeWindow (HostX.dpy, host_screen->win, width, height); /* Ask the WM to keep our size static */ diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h index e65e0c9..4fa8003 100644 --- a/hw/kdrive/ephyr/hostx.h +++ b/hw/kdrive/ephyr/hostx.h @@ -195,7 +195,8 @@ hostx_set_cmap_entry(unsigned char idx, void* hostx_screen_init (EphyrScreenInfo screen, int width, int height, - int buffer_height); + int buffer_height, + int *bpp); void hostx_paint_rect(EphyrScreenInfo screen, -- 1.7.1.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
