Skip to content
Snippets Groups Projects
  1. Sep 06, 2023
  2. Aug 25, 2023
  3. Jul 16, 2023
  4. Jul 15, 2023
  5. Jun 21, 2023
    • Gergo Koteles's avatar
      libdecor: check if plugins use different conflicting symbols · bb2ec856
      Gergo Koteles authored
      The plugin loader checks for conflicting symbols in
      the executable or plugin. If so, it skips that plugin.
      
      Currently the GTK plugin has been skipped when libdecor is
      loaded with dlopen, because under these circumstances dlsym
      always finds png_free in the default library search order
      (RTLD_DEFAULT).
      
      It turned out that different libpng versions
      only caused problems if png_free was resolved differently in the
      plugin or by the default shared object search order.
      
      This fix modifies the check that the conflicting symbols are not
      the same inside the plugin and by the default search order.
      
      Tested with
      Stellaris (falls back to the cairo plugin)
      Blender (uses the GTK plugin)
      demo-egl (uses the GTK plugin)
      Cameractrls SDL viewer (uses the GTK plugin)
      bb2ec856
  6. Jun 06, 2023
  7. May 26, 2023
  8. May 16, 2023
  9. May 15, 2023
  10. May 01, 2023
  11. Apr 04, 2023
  12. Feb 15, 2023
  13. Feb 06, 2023
  14. Dec 29, 2022
  15. Dec 27, 2022
    • polter's avatar
      gtk: don't redraw decoration redundantly · 4b2c5f41
      polter authored
      
      When calculating border size we don't need to redraw the whole
      decoration but only the title bar, it's enough to get correct height.
      
      Also we don't need to redraw it every time, but only when window has
      been maximized or tiled.
      
      This dramatically improves window resize performance.
      
      Signed-off-by: default avatarPavel Artsishevsky <polter.rnd@gmail.com>
      4b2c5f41
  16. Dec 10, 2022
  17. Dec 03, 2022
  18. Nov 25, 2022
  19. Nov 03, 2022
  20. Oct 27, 2022
  21. Sep 19, 2022
  22. Sep 16, 2022
    • ManoloFLTK's avatar
      cairo: Keep a ref to the frame while invoking libdecor_frame_close(). · a735d056
      ManoloFLTK authored
      The problem to be taken care of is that libdecor_frame_close()
      may or may not close the decorated window and thus destroy its frame.
      Subsequent code should then not access the frame it it was destroyed.
      
      The solution is to proceed as follows
      libdecor_frame_ref()   <--- the frame's reference count goes to 2
      libdecor_frame_close() <--- the frame's reference count goes to 1
      update the frame       <--- the frame has not been destroyed yet, so it can be updated
      libdecor_frame_unref() <--- the frame's reference count goes to 0, and the frame is destroyed.
      
      This solution is also compatible with cases where libdecor_frame_close() triggers a
      "Confirm this window is to be closed" which ends up keeping the window alive.
      a735d056
  23. May 31, 2022
    • Olivier Fourdan's avatar
      os-compatibility: handle EINTR gracefully · 5e58ec62
      Olivier Fourdan authored
      If os_resize_anonymous_file() called from os_create_anonymous_file()
      fails with EINTR (Interrupted system call), then the buffer allocation
      fails and the whole process will segfault:
      
        (gdb) bt
        in draw_component_content () at src/plugins/cairo/libdecor-cairo.c
        draw_border_component () at src/plugins/cairo/libdecor-cairo.c
        in draw_border () at src/plugins/cairo/libdecor-cairo.c
        draw_decoration () at src/plugins/cairo/libdecor-cairo.c
        in libdecor_frame_commit () at src/libdecor.c
        [...]
      
        (gdb) p border_component->server.buffer
        $2 = (struct buffer *) 0x0
      
      And the log shows:
      
        creating a buffer file for 61023744 B failed: Interrupted system call
      
      To avoid that, retry posix_fallocate() on EINTR.
      
      However, in the presence of an alarm, the interrupt may trigger
      repeatedly and prevent a large posix_fallocate() to ever complete
      successfully, so we need to first block SIGALRM to prevent this.
      5e58ec62
  24. Apr 28, 2022
Loading