Skip to content
Snippets Groups Projects
  1. Oct 30, 2020
  2. Oct 27, 2020
  3. Sep 19, 2020
    • Olivier Fourdan's avatar
      More XErrors traps · 3119b50b
      Olivier Fourdan authored
      
      Previously we would leak error traps in free_win_data() causing
      slowdowns overtime as the list of requests grows.
      
      While fixing the leak is crucial, it also unveiled several places where
      actual error traps are missing, causing xfwm4 to abort more often.
      
      Based on XErrors reported, the issue is triggered when freeing pixmaps
      or render pictures.
      
      Add more XErrors traps to catch those errors.
      
      Signed-off-by: default avatarOlivier Fourdan <fourdan@xfce.org>
      #433
      #435
      #436
      3119b50b
  4. Sep 16, 2020
    • bob5972's avatar
      compositor: Add cwindow_hash to optimize find_cwindow_in_screen · a1fbb8f1
      bob5972 authored and bob5972's avatar bob5972 committed
      
      On my system when the window manager is mostly idling (0-12 tiny
      updates per second), about half the CPU time in xfwm4 is spent in
      find_cwindow_in_screen, iterating the linked list looking for a
      matching Window id.  Instead, this patch adds a GHashTable to map
      Window ids to CWindows, completely eliminating that cost in my
      profiles, resulting in a 0.3-1.0% of a core total CPU reduction for
      this workload.
      
      Signed-off-by: default avatarMichael Banack <bob5972@banack.net>
      a1fbb8f1
    • bob5972's avatar
      compositor: Add define for compositor_timeout_cb interval · 2fa246ca
      bob5972 authored and bob5972's avatar bob5972 committed
      
      The call to g_timeout_add in add_repair seems to be mixing up priority
      and callback interval.  Instead, let's call g_timeout_add_full to make
      it clear there are two separate fields, and add an appropriate define
      for the callback interval, setting it to the same 1ms value it was
      currently using.
      
      Signed-off-by: default avatarMichael Banack <bob5972@banack.net>
      2fa246ca
  5. Aug 08, 2020
    • bob5972's avatar
      compositor: use g_slice allocator for compositor windows · 390af609
      bob5972 authored and Olivier Fourdan's avatar Olivier Fourdan committed
      On my system, 2-4% of the CPU time in xfwm4 is being spend in
      find_cwindow_in_screeni() pulling in entries from the linked list on
      a lightly updating desktop.
      
      After this change, 25-50% of that CPU is gone, presumably because the
      slice allocators have better locality of the list-entries.
      
      Closes: #416
      390af609
    • bob5972's avatar
      Fix errorTrap leak in free_win_data · e6a32cf7
      bob5972 authored and Olivier Fourdan's avatar Olivier Fourdan committed
      The function free_win_data() may generate X11 errors as the client
      window may already be gone.
      
      To avoid those, the entire function code is supposed to be enclosed
      within an error trap/push.
      
      A typo in the code would however push twice instead of a balanced
      push/pop which causes the list of event sequences in GDK to grow
      indefinitely, leading to slowdowns as the list grows over time.
      
      Fix the leak by balancing the error push with an error pop at the end
      of the function.
      
      #351
      e6a32cf7
    • Olivier Fourdan's avatar
      compositor: use actual atom · 78c5dc42
      Olivier Fourdan authored
      
      The function compositorCheckCMSelection() would use the atom index in
      our table of atoms, instead of the actual atom, so this is unlikely to
      work as expected.
      
      Fix the code to use the appropriate atom as it should.
      
      Signed-off-by: default avatarOlivier Fourdan <fourdan@xfce.org>
      78c5dc42
    • Olivier Fourdan's avatar
      cleanup: prefer zero initialized memory allocation · b510bdba
      Olivier Fourdan authored
      
      Prefer using memory allocation functions which initialize the memory
      with 0's to be on the safe side.
      
      No functional change.
      
      Signed-off-by: default avatarOlivier Fourdan <fourdan@xfce.org>
      b510bdba
  6. Jul 27, 2020
  7. Jul 25, 2020
  8. Jul 15, 2020
    • Olivier Fourdan's avatar
      settings: Duplicate string gvalues · 056ba6ad
      Olivier Fourdan authored
      
      The gvalues strings were considered statics, hence not duplicated.
      
      As the caller frees the strings after setting the gvalue, the actual
      content would end up pointing at free data.
      
      Consider string gvalues as regular strings, meaning that the given
      string value is duplicated as a gvalue.
      
      Signed-off-by: default avatarOlivier Fourdan <fourdan@xfce.org>
      Closes: #406
      056ba6ad
    • Olivier Fourdan's avatar
      client: Really send synthetic configure notify · 6637211e
      Olivier Fourdan authored
      Commit 821ee7cc would not actually send the synthetic configure notify
      events anymore. That obviously breaks plenty of applications…
      
      While the logic of the commit itself is sound, the problem is that it
      bases the descision to send the configure notify event by comparing
      against the current window size and location.
      
      The problem is that the current window size and location is modified in
      various places, defeating the logic.
      
      Add an “applied_geometry” rectangle that we update only in a single
      place in the code, so that we know exactly when to send a synthetic
      configure notify event.
      
      Closes: #403
      
      
      Signed-off-by: default avatarOlivier Fourdan <fourdan@xfce.org>
      6637211e
    • Olivier Fourdan's avatar
      client: Use GdkRectangle for saved size/position · 6c712173
      Olivier Fourdan authored
      
      The size and position of the client are stored at multiple occasions.
      
      But the naming of the variables used is a bit confusing, rename the
      variables and use GdkRectangles instead.
      
      Signed-off-by: default avatarOlivier Fourdan <fourdan@xfce.org>
      6c712173
  9. Jun 12, 2020
  10. May 23, 2020
  11. Apr 22, 2020
  12. Apr 21, 2020
  13. Apr 20, 2020
  14. Apr 13, 2020
  15. Apr 12, 2020
  16. Apr 11, 2020
Loading