X11: Fix function returning before cleanup

The _glfwPlatformSetWindowFloating function would return without freeing
the state array if the window was already in the requested state.
This commit is contained in:
Camilla Löwy 2021-08-15 14:55:13 +02:00
parent 71829a0f0d
commit 071d7c0f46
2 changed files with 17 additions and 16 deletions

View File

@ -230,6 +230,7 @@ information on what to include when reporting a bug.
reported (#1112,#1415,#1472,#1616) reported (#1112,#1415,#1472,#1616)
- [X11] Bugfix: Some window attributes were not applied on leaving fullscreen - [X11] Bugfix: Some window attributes were not applied on leaving fullscreen
(#1863) (#1863)
- [X11] Bugfix: Changing `GLFW_FLOATING` could leak memory
- [Wayland] Added dynamic loading of all Wayland libraries - [Wayland] Added dynamic loading of all Wayland libraries
- [Wayland] Removed support for `wl_shell` (#1443) - [Wayland] Removed support for `wl_shell` (#1443)
- [Wayland] Bugfix: The `GLFW_HAND_CURSOR` shape used the wrong image (#1432) - [Wayland] Bugfix: The `GLFW_HAND_CURSOR` shape used the wrong image (#1432)

View File

@ -2671,14 +2671,14 @@ void _glfwPlatformSetWindowFloating(_GLFWwindow* window, GLFWbool enabled)
break; break;
} }
if (i < count) if (i == count)
return; {
XChangeProperty(_glfw.x11.display, window->x11.handle,
XChangeProperty(_glfw.x11.display, window->x11.handle, _glfw.x11.NET_WM_STATE, XA_ATOM, 32,
_glfw.x11.NET_WM_STATE, XA_ATOM, 32, PropModeAppend,
PropModeAppend, (unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE,
(unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE, 1);
1); }
} }
else if (states) else if (states)
{ {
@ -2688,15 +2688,15 @@ void _glfwPlatformSetWindowFloating(_GLFWwindow* window, GLFWbool enabled)
break; break;
} }
if (i == count) if (i < count)
return; {
states[i] = states[count - 1];
count--;
states[i] = states[count - 1]; XChangeProperty(_glfw.x11.display, window->x11.handle,
count--; _glfw.x11.NET_WM_STATE, XA_ATOM, 32,
PropModeReplace, (unsigned char*) states, count);
XChangeProperty(_glfw.x11.display, window->x11.handle, }
_glfw.x11.NET_WM_STATE, XA_ATOM, 32,
PropModeReplace, (unsigned char*) states, count);
} }
if (states) if (states)