mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-26 04:10:12 +01:00
ephyr: Fix crash on 24bpp host framebuffer
Use bytes_per_line and bits_per_pixel from the created XImage to fix
https://bugzilla.redhat.com/show_bug.cgi?id=518960
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit bd58ebe4cf)
This commit is contained in:
parent
4bd8e9ecc3
commit
b1c01839d8
3 changed files with 9 additions and 6 deletions
|
|
@ -237,13 +237,11 @@ ephyrMapFramebuffer(KdScreenInfo * screen)
|
|||
KdComputePointerMatrix(&m, ephyrRandr, screen->width, screen->height);
|
||||
KdSetPointerMatrix(&m);
|
||||
|
||||
priv->bytes_per_line =
|
||||
((screen->width * screen->fb.bitsPerPixel + 31) >> 5) << 2;
|
||||
|
||||
buffer_height = ephyrBufferHeight(screen);
|
||||
|
||||
priv->base =
|
||||
hostx_screen_init(screen, screen->width, screen->height, buffer_height);
|
||||
hostx_screen_init(screen, screen->width, screen->height, buffer_height,
|
||||
&priv->bytes_per_line, &screen->fb.bitsPerPixel);
|
||||
|
||||
if ((scrpriv->randr & RR_Rotate_0) && !(scrpriv->randr & RR_Reflect_All)) {
|
||||
scrpriv->shadow = FALSE;
|
||||
|
|
|
|||
|
|
@ -617,7 +617,8 @@ hostx_set_cmap_entry(unsigned char idx,
|
|||
*/
|
||||
void *
|
||||
hostx_screen_init(EphyrScreenInfo screen,
|
||||
int width, int height, int buffer_height)
|
||||
int width, int height, int buffer_height,
|
||||
int *bytes_per_line, int *bits_per_pixel)
|
||||
{
|
||||
int bitmap_pad;
|
||||
Bool shm_success = False;
|
||||
|
|
@ -694,6 +695,9 @@ hostx_screen_init(EphyrScreenInfo screen,
|
|||
malloc(host_screen->ximg->bytes_per_line * buffer_height);
|
||||
}
|
||||
|
||||
*bytes_per_line = host_screen->ximg->bytes_per_line;
|
||||
*bits_per_pixel = host_screen->ximg->bits_per_pixel;
|
||||
|
||||
XResizeWindow(HostX.dpy, host_screen->win, width, height);
|
||||
|
||||
/* Ask the WM to keep our size static */
|
||||
|
|
|
|||
|
|
@ -193,7 +193,8 @@ hostx_set_cmap_entry(unsigned char idx,
|
|||
unsigned char r, unsigned char g, unsigned char b);
|
||||
|
||||
void *hostx_screen_init(EphyrScreenInfo screen,
|
||||
int width, int height, int buffer_height);
|
||||
int width, int height, int buffer_height,
|
||||
int *bytes_per_line, int *bits_per_pixel);
|
||||
|
||||
void
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue