1. 22 Jun, 2019 28 commits
  2. 18 Jun, 2019 12 commits
    • Ulrich Sibiller's avatar
      Font.c: code simplifications · 8205db42
      Ulrich Sibiller authored
      8205db42
    • Ulrich Sibiller's avatar
      various scope improvements · cb508b26
      Ulrich Sibiller authored
      cb508b26
    • Ulrich Sibiller's avatar
      glxext.c: fix another memory leak · bffdacc4
      Ulrich Sibiller authored
      ==10226== 3,337 bytes in 1 blocks are definitely lost in loss record 295 of 307
      ==10226==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==10226==    by 0x6281DB9: strdup (strdup.c:42)
      ==10226==    by 0x2ABA9E: __glXClientInfo (glxcmds.c:2170)
      ==10226==    by 0x17CA3E: __glXDispatch (NXglxext.c:128)
      ==10226==    by 0x16EE77: Dispatch (NXdispatch.c:476)
      ==10226==    by 0x14DCE0: main (main.c:353)
      
      There's no point in trying to free cl->* after memset(0).
      
      This one is a bug that is found identically in xorg upstream and has
      only been fixed during rework of the whole client resource freeing
      stuff. So we fix it in glxext.c.
      bffdacc4
    • Ulrich Sibiller's avatar
      Screen.c: more debug output · b5eb7c76
      Ulrich Sibiller authored
      b5eb7c76
    • Ulrich Sibiller's avatar
      Extension.c: code simplifications · 7e12c9ba
      Ulrich Sibiller authored
      7e12c9ba
    • Ulrich Sibiller's avatar
    • Ulrich Sibiller's avatar
      mi/miinitext.c: fix memleaks: remove (double) glx initialization · 5cb49714
      Ulrich Sibiller authored
      Fix these memory leaks:
      
      ==30021== 128 bytes in 1 blocks are definitely lost in loss record 230 of 302
      ==30021==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==30021==    by 0x2EF89C: init_visuals (xf86glx.c:390)
      ==30021==    by 0x2EF89C: __MESA_initVisuals (xf86glx.c:541)
      ==30021==    by 0x17C922: GlxInitVisuals (glxext.c:317)
      ==30021==    by 0x218E73: fbInitVisuals (fbcmap.c:668)
      ==30021==    by 0x20BEB1: fbFinishScreenInit (fbscreen.c:229)
      ==30021==    by 0x20C275: fbScreenInit (fbscreen.c:273)
      ==30021==    by 0x1E0317: nxagentOpenScreen (Screen.c:1357)
      ==30021==    by 0x16D848: AddScreen (dispatch.c:4171)
      ==30021==    by 0x1DB7FF: InitOutput (Init.c:396)
      ==30021==    by 0x14DB12: main (main.c:279)
      ==30021==
      ==30021== 3,072 (192 direct, 2,880 indirect) bytes in 1 blocks are definitely lost in loss record 290 of 302
      ==30021==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==30021==    by 0x2CCCC7: _gl_context_modes_create (glcontextmodes.c:364)
      ==30021==    by 0x2EF87C: init_visuals (xf86glx.c:381)
      ==30021==    by 0x2EF87C: __MESA_initVisuals (xf86glx.c:541)
      ==30021==    by 0x17C922: GlxInitVisuals (glxext.c:317)
      ==30021==    by 0x218E73: fbInitVisuals (fbcmap.c:668)
      ==30021==    by 0x20BEB1: fbFinishScreenInit (fbscreen.c:229)
      ==30021==    by 0x20C275: fbScreenInit (fbscreen.c:273)
      ==30021==    by 0x1E0317: nxagentOpenScreen (Screen.c:1357)
      ==30021==    by 0x16D848: AddScreen (dispatch.c:4171)
      ==30021==    by 0x1DB7FF: InitOutput (Init.c:396)
      ==30021==    by 0x14DB12: main (main.c:279)
      
      The problem here is that GlxInitVisuals is called twice. First via
      fbScreenInit and then again via nxagentInitGlxExtension. We remove the
      first one to ensure the code in nxagenOpenScreen works as initially
      intended.
      
      There's an xorg upstream patch that does the same
      (7d74690536b64f7b8e8036507ab7790807349c50), but it also cleans up
      other stuff we do not even have in out source (yet?).
      5cb49714
    • Ulrich Sibiller's avatar
      Screen.c: fix another memory leak · 75644222
      Ulrich Sibiller authored
      ==12280== 0 bytes in 5 blocks are definitely lost in loss record 1 of 304
      ==12280==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==12280==    by 0x2EFC29: init_visuals (xf86glx.c:489)
      ==12280==    by 0x2EFC29: __MESA_initVisuals (xf86glx.c:540)
      ==12280==    by 0x17C902: GlxInitVisuals (glxext.c:317)
      ==12280==    by 0x218C03: fbInitVisuals (fbcmap.c:668)
      ==12280==    by 0x20BC41: fbFinishScreenInit (fbscreen.c:229)
      ==12280==    by 0x20C005: fbScreenInit (fbscreen.c:273)
      ==12280==    by 0x1E024C: nxagentOpenScreen (Screen.c:1356)
      ==12280==    by 0x16D828: AddScreen (dispatch.c:4171)
      ==12280==    by 0x1DB7DF: InitOutput (Init.c:396)
      ==12280==    by 0x14DB12: main (main.c:279)
      ==12280==
      ==12280== 64 bytes in 2 blocks are definitely lost in loss record 223 of 304
      ==12280==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==12280==    by 0x2EFA05: init_visuals (xf86glx.c:489)
      ==12280==    by 0x2EFA05: __MESA_initVisuals (xf86glx.c:540)
      ==12280==    by 0x17C902: GlxInitVisuals (glxext.c:317)
      ==12280==    by 0x218C03: fbInitVisuals (fbcmap.c:668)
      ==12280==    by 0x20BC41: fbFinishScreenInit (fbscreen.c:229)
      ==12280==    by 0x20C005: fbScreenInit (fbscreen.c:273)
      ==12280==    by 0x1E024C: nxagentOpenScreen (Screen.c:1356)
      ==12280==    by 0x16D828: AddScreen (dispatch.c:4171)
      ==12280==    by 0x1DB7DF: InitOutput (Init.c:396)
      ==12280==    by 0x14DB12: main (main.c:279)
      75644222
    • Ulrich Sibiller's avatar
      Fix memleaks: Free devPrivates of devices on shutdown · 4dd1f3cb
      Ulrich Sibiller authored
      Fixes these two memory leaks identified by valgrind:
      
      ==28336== 32 (8 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 180 of 308
      ==28336==    at 0x48356AF: malloc (vg_replace_malloc.c:298)
      ==28336==    by 0x4837DE7: realloc (vg_replace_malloc.c:826)
      ==28336==    by 0x1AE322: AllocateDevicePrivate (privates.c:439)
      ==28336==    by 0x27527B: XkbSetExtension (xkbActions.c:72)
      ==28336==    by 0x198E9B: _RegisterPointerDevice (devices.c:361)
      ==28336==    by 0x1DBA35: InitInput (Init.c:440)
      ==28336==    by 0x14DBD6: main (main.c:303)
      ==28336==
      ==28336== 32 (8 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 181 of 308
      ==28336==    at 0x48356AF: malloc (vg_replace_malloc.c:298)
      ==28336==    by 0x4837DE7: realloc (vg_replace_malloc.c:826)
      ==28336==    by 0x1AE322: AllocateDevicePrivate (privates.c:439)
      ==28336==    by 0x27527B: XkbSetExtension (xkbActions.c:72)
      ==28336==    by 0x198F1B: _RegisterKeyboardDevice (devices.c:384)
      ==28336==    by 0x1DBA3D: InitInput (Init.c:441)
      ==28336==    by 0x14DBD6: main (main.c:303)
      4dd1f3cb
    • Ulrich Sibiller's avatar
      CloseDevice: call XkbRemoveResourceClient before freeing key class struct · ca741177
      Ulrich Sibiller authored
      This patch is not necessary at the current code level. But when xkb
      code introduced the dev->key check Xorg upstream missed that. So we
      backport it now to skip that trap when updating xkb code.
      
        Author: Alan Coopersmith <alan.coopersmith@sun.com>
        Date:   Mon Jan 4 18:21:54 2010 -0800
      
          CloseDevice: call XkbRemoveResourceClient before freeing key class struct
      
          XkbRemoveResourceClient() returns immediately if dev->key is NULL.
          CloseDevice calls XkbRemoveResourceClient until it removes all resources.
      
          If we free dev->key and NULL it before XkbRemoveResourceClient, then
          infinite loop ensues, and the server appears to hang on exit or crash.
      Signed-off-by: 's avatarAlan Coopersmith <alan.coopersmith@sun.com>
      Reviewed-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
      Reviewed-by: 's avatarDaniel Stone <daniel@fooishbar.org>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      Backported-to-NX-by: 's avatarUlrich Sibiller <uli42@gmx.de>
      ca741177
    • Ulrich Sibiller's avatar
      Keyboard.c: nullify freed pointers · 340de78e
      Ulrich Sibiller authored
      While trying to properly free memory allocated by XKB I accidently
      called nxagentFreeKeyboardDeviceData twice and noticed it would cause
      a segfault here. As the other pointers are also nullified after
      being freed let's just do it here, too.
      340de78e
    • Ulrich Sibiller's avatar
      Screen.c: Fix: make sure RRCloseScreen is being called · 3b06ad51
      Ulrich Sibiller authored
      Fixes ArcticaProject/nx-libs#598
      
      In nxagentOpenScreen we first initialized the RRExtension for the
      screen and then replaced pScreen->CloseScreen by
      nxagentCloseScreen. This resulted in RandR's RRCloseScreen (and any
      other CloseScreen procedure installed by extensions) being no longer
      called.
      
      Moving RandR init after configuring pScreen->CloseScreen ensures the
      correct calling cascade:
      
      RRCloseScreen -> nxagentCloseScreen ->fbCloseScreen (called explicitly
      by nxagentCloseScreen).
      
      Which in turn will fix this memory leak:
      
      ==9688== 328 (312 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 271 of 319
      ==9688==    at 0x4837B65: calloc (vg_replace_malloc.c:752)
      ==9688==    by 0x4ED2C6: RRScreenInit (randr.c:329)
      ==9688==    by 0x1F2B18: nxagentInitRandRExtension (Extensions.c:122)
      ==9688==    by 0x1DEAFF: nxagentOpenScreen (Screen.c:1409)
      ==9688==    by 0x16D7F8: AddScreen (dispatch.c:4257)
      ==9688==    by 0x1DA0CF: InitOutput (Init.c:397)
      ==9688==    by 0x14DCC2: main (main.c:280)
      3b06ad51