- Oct 30, 2020
-
-
- Oct 27, 2020
-
-
Olivier Fourdan authored
Make Xi2 support selectable at configure time and disable it by default. Xi2 in the window manager causes some very subtile bugs with legacy applications using the core X11 protocol. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org> xfce/xfwm4#445 xfce/xfwm4#427
-
Olivier Fourdan authored
Signed-off-by Olivier Fourdan <fourdan@xfce.org> #444 #436 #433 #405
-
Olivier Fourdan authored
When the compositor is disabled on a given screen, there is no point in looking for XID in the hash table. That fixes errors like: g_hash_table_lookup: assertion 'hash_table != NULL' failed When the compositor is disabled. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Sep 19, 2020
-
-
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:
Olivier Fourdan <fourdan@xfce.org> #433 #435 #436
-
- Sep 16, 2020
-
-
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:
Michael Banack <bob5972@banack.net>
-
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:
Michael Banack <bob5972@banack.net>
-
- Aug 08, 2020
-
-
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
-
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
-
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:
Olivier Fourdan <fourdan@xfce.org>
-
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:
Olivier Fourdan <fourdan@xfce.org>
-
- Jul 27, 2020
-
-
Olivier Fourdan authored
A pid is not necessarily a long on all systems, so casting the value of NET_WM_PID directly into a GPid may cause a stack overflow. Fixes: 49c1a33a Closes: #411 Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Jul 25, 2020
-
-
If the user selected a primary monitor, the Alt+Tab window will only appear on that monitor, otherwise on all of them. To quote the GDK documentation for gdk_display_get_primary_monitor: > [...], specialized desktop applications such as panels should place > themselves on the primary monitor. It is however not possible to use gdk_display_get_primary_monitor and also respect the user's setting. Despite what the online documentation says, recent versions of GTK+3 may no longer return a null value and will instead pick one monitor as the primary if there isn't already one defined. The nullable marker [1] for the return value was eventually dropped. In other words, whether the user selected a primary monitor or not gdk_display_get_primary_monitor will always return one. Signed-off-by:
Dridi Boukelmoune <dridi@fedoraproject.org> [1] https://gitlab.gnome.org/GNOME/gtk/commit/76d95c312dde
-
Signed-off-by:
Dridi Boukelmoune <dridi@fedoraproject.org>
-
Olivier Fourdan authored
Add more XError traps related to XConfigureWindow requests. #405 Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
To be on the safe side. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Jul 15, 2020
-
-
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:
Olivier Fourdan <fourdan@xfce.org> Closes: #406
-
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:
Olivier Fourdan <fourdan@xfce.org>
-
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:
Olivier Fourdan <fourdan@xfce.org>
-
- Jun 12, 2020
-
-
Olivier Fourdan authored
xfwm4 would send a synthetic configure event while resizing the client window, which is not what the ICCCM states. Fix this by sending the synthetic configure event only when necessary, as per the ICCCM specification. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Avoid setting the same flag twice in a row, we already set the CFG_REQUEST just a few line above. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Some client do not process events on their temporary windows, causing the client unresponsive dialog to show up. Avoid pinging the client on focus in, even though this is clearly a client bug. This reverts commit 637d70b2.
-
- May 23, 2020
-
-
Olivier Fourdan authored
To make sure that they are still alive and detect hung clients. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
When xfwm4 needs to kill an unresponsive client, it will use the its PID is known. However, the _NET_WM_PID as defined in the extended window manager hint mechanism is unreliable when the client runs within a sandbox, as it is the client itself who sets that property using its own view of the PID. The Xserver can provide a more accurate value of the client PID using the XRes X11 extension, so use that protocol if available. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
The X-Resource extension client library (XRes) allows a client to query the Xserver for various resources associated with an X11 client, including its PID. Add (optional) support for XRes in xfwm4 and use it for getting the client's PID instead of relying on _NET_WM_PID. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Apr 22, 2020
-
-
Olivier Fourdan authored
It's easier on the eyes... Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Bug: 16713 If one of the required X11 extension is not available, the composiutor cannot be used. Yet xfwm4 would still try to enable the compositor for each screen, which would not work and prevent xfwm4 from starting. If we can't use the compositor, well, we'd better not use it... Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Apr 21, 2020
-
-
Olivier Fourdan authored
Clicking outside the tab-win would cancel the selection, make sure to revert to the original first window of the list in that case, it feels more natural and predictible. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Bug: 16713 Without XRender, the mask would be misrendered and completely transparent. As a result, the entire pixmap would become totally transparent and all window decorations become invisible. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Apr 20, 2020
-
-
Olivier Fourdan authored
Bug: 16708 With Xi2, the clients needs to reset the valuators (for mouse wheel) themselves, usually on focus events. Qt instead does that on EnterNotify, but ignores the EnterNotify events resulting from grabs first. This is a bug in Qt as that prevents the valuators to be reset if the pointer enters the window while grabbed. Precisely, xfwm4 would issue a pointer grab while cycling to prevent from random button events, and would only ungrab after the client window is raised and focused. While this is a bug in Qt, we can still work around the issue in xfwm4 by not issuing a pointer grab and simply abort the window cycling when a click occurs outside of the alt-tab window. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Update the Pango attributes whent he widget font factor is updated, then repaint all frames. With this, changing the scaling factor in the appearance settings updates the title font dynamically as well. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Bug: 16067 The font height is not used anymore, remove it. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Bug: 16067 Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
Bug: 16711 We need to keep the pango font attributes for the scale with HiDPI. This reverts commit 34a31e27.
-
- Apr 13, 2020
-
-
Olivier Fourdan authored
Bug: 16383 If the window has vanished, the XShape request will fail. Make sure all XShape requests are protected by error traps. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
As we already do an error trap/push with X11 core devices, do the same with Xi2 grabs and remove the check from the callers as it is not needed anymore. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Apr 12, 2020
-
-
Olivier Fourdan authored
Bug: 15891 When raising a transient window we would automatically raise its parent windows. However, if the transient and parent are not placed on the same layer, we might raise the parent from a lower layer. To avoid that issue, limit the scope of search to the same or higher layers. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
When using automatic vblank mode, use a message instead of a warning. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
- Apr 11, 2020
-
-
Olivier Fourdan authored
With vblank mode set to auto (default), use the GL renderer to select XPresent on Intel and AMD if available. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-
Olivier Fourdan authored
glEnable() is not once the texture type is chosen, no need to do that in advance. Signed-off-by:
Olivier Fourdan <fourdan@xfce.org>
-