xserver-multidpi/glamor
Maarten Lankhorst 842cd7eb43 fixup picture in SetWindowPixmap
When creating a window with recordmydesktop running, the following may happen:

create picture 0x1cd457e0, with drawable 0x1327d1f0
(SetWindowPixmap is called)
destroy picture 0x1cd457e0, with drawable 0x1cd65820

Obtaining format for pixmap 0x1327d1f0 and picture 0x1cd457e0
==7989== Invalid read of size 4
==7989==    at 0x8CAA0CA: glamor_get_tex_format_type_from_pixmap (glamor_utils.h:1252)
==7989==    by 0x8CAD1B7: glamor_download_sub_pixmap_to_cpu (glamor_pixmap.c:1074)
==7989==    by 0x8CA8BB7: _glamor_get_image (glamor_getimage.c:66)
==7989==    by 0x8CA8D2F: glamor_get_image (glamor_getimage.c:92)
==7989==    by 0x29AEF2: miSpriteGetImage (misprite.c:413)
==7989==    by 0x1E7674: compGetImage (compinit.c:148)
==7989==    by 0x1F5E5B: ProcShmGetImage (shm.c:684)
==7989==    by 0x1F686F: ProcShmDispatch (shm.c:1121)
==7989==    by 0x15D00D: Dispatch (dispatch.c:432)
==7989==    by 0x14C569: main (main.c:298)
==7989==  Address 0x1cd457f0 is 16 bytes inside a block of size 120 free'd
==7989==    at 0x4C2B60C: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==7989==    by 0x228897: FreePicture (picture.c:1477)
==7989==    by 0x228B23: PictureDestroyWindow (picture.c:73)
==7989==    by 0x234C19: damageDestroyWindow (damage.c:1646)
==7989==    by 0x1E92C0: compDestroyWindow (compwindow.c:590)
==7989==    by 0x20FF85: DbeDestroyWindow (dbe.c:1389)
==7989==    by 0x185D46: FreeWindowResources (window.c:907)
==7989==    by 0x1889A7: DeleteWindow (window.c:975)
==7989==    by 0x17EBF1: doFreeResource (resource.c:873)
==7989==    by 0x17FC1B: FreeClientResources (resource.c:1139)
==7989==    by 0x15C4DE: CloseDownClient (dispatch.c:3402)
==7989==    by 0x2AB843: CheckConnections (connection.c:1008)
==7989==
(II) fail to get matched format for dfdfdfdf

The fix is to update the picture pointer when the window pixmap is changed,
so it moves the picture around with the window rather than the pixmap.

This makes FreePicture work correctly.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71088
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2013-12-18 11:23:54 -08:00
..
compat-api.h Added the missed header file for xorg 1.13 compat. 2013-12-18 11:23:53 -08:00
compiler.h optimize: Use likely and unlikely. 2013-12-18 11:23:52 -08:00
glamor_addtraps.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_compositerects.c fixup picture in SetWindowPixmap 2013-12-18 11:23:54 -08:00
glamor_copyarea.c Don't use glBlitFramebufferEXT for overlapping copies. 2013-12-18 11:23:53 -08:00
glamor_copyplane.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_copywindow.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_core.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_debug.h glamor_largepixmap: first commit for large pixmap. 2013-12-18 11:23:51 -08:00
glamor_egl.c glamoregl: Use xf86ScreenToScrn() 2013-12-18 11:23:53 -08:00
glamor_eglmodule.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_fbo.c Fixed an incorrect printf format. 2013-12-18 11:23:54 -08:00
glamor_fill.c Use glDrawRangeElements instead of glDrawElements 2013-12-18 11:23:54 -08:00
glamor_fillspans.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_getimage.c Remove useless return statement 2013-12-18 11:23:54 -08:00
glamor_getspans.c Added some copyright and author information. 2013-12-18 11:23:51 -08:00
glamor_gl_dispatch.c Use glDrawRangeElements instead of glDrawElements 2013-12-18 11:23:54 -08:00
glamor_gl_dispatch.h Use glDrawRangeElements instead of glDrawElements 2013-12-18 11:23:54 -08:00
glamor_glext.h gles2: Fixed the compilation problem and some bugs. 2013-12-18 11:23:53 -08:00
glamor_glyphblt.c Fixed all unused variables warnings. 2013-12-18 11:23:51 -08:00
glamor_glyphs.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_gradient.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_largepixmap.c glamor_largepixmap: Fixed a bug in repeat clipping. 2013-12-18 11:23:53 -08:00
glamor_picture.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_pixmap.c Shoud return null subpixmap if we fail to get a valid map address. 2013-12-18 11:23:54 -08:00
glamor_polyfillrect.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_polylines.c Silence compilation warnings. 2013-12-18 11:23:53 -08:00
glamor_polyops.c glyphblt/polyops: Use miFunctions by default. 2013-12-18 11:23:49 -08:00
glamor_priv.h fixup picture in SetWindowPixmap 2013-12-18 11:23:54 -08:00
glamor_putimage.c Remove redundant dispatch->glEnable(GL_TEXTURE_2D) 2013-12-18 11:23:54 -08:00
glamor_render.c glamor_render: fix PictFilters 2013-12-18 11:23:54 -08:00
glamor_setspans.c Fix _glamor_set_spans() bug (re-used 'n' variable) 2013-12-18 11:23:54 -08:00
glamor_tile.c glamor_copyarea: Use blitcopy if current state is not render. 2013-12-18 11:23:53 -08:00
glamor_trapezoid.c Use glDrawRangeElements instead of glDrawElements 2013-12-18 11:23:54 -08:00
glamor_triangles.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_utils.h glamor_utils: fix unlikely define use 2013-12-18 11:23:53 -08:00
glamor_window.c fixup picture in SetWindowPixmap 2013-12-18 11:23:54 -08:00
glamor_xv.c glamor: add initial Xv support 2013-12-18 11:23:54 -08:00
glamor.c fixup picture in SetWindowPixmap 2013-12-18 11:23:54 -08:00
glamor.h glamor: add initial Xv support 2013-12-18 11:23:54 -08:00
glapi.h Added strict warning flags to CFLAGS. 2013-12-18 11:23:51 -08:00
Makefile.am glamor: add initial Xv support 2013-12-18 11:23:54 -08:00