mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-01-24 09:21:07 +00:00
wayland: Never commit with an undefined window title
If libdecor performs a commit with the frame title being undefined, a crash can occur within the library or its plugins. Always ensure that the title is set to a valid string to avoid this.
This commit is contained in:
parent
99e9156ff5
commit
7da74eb5be
|
@ -2069,26 +2069,25 @@ void Wayland_SetWindowTitle(_THIS, SDL_Window * window)
|
||||||
{
|
{
|
||||||
SDL_WindowData *wind = window->driverdata;
|
SDL_WindowData *wind = window->driverdata;
|
||||||
SDL_VideoData *viddata = _this->driverdata;
|
SDL_VideoData *viddata = _this->driverdata;
|
||||||
|
const char *title = window->title ? window->title : "";
|
||||||
|
|
||||||
if (WINDOW_IS_XDG_POPUP(window)) {
|
if (WINDOW_IS_XDG_POPUP(window)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window->title != NULL) {
|
|
||||||
#ifdef HAVE_LIBDECOR_H
|
#ifdef HAVE_LIBDECOR_H
|
||||||
if (WINDOW_IS_LIBDECOR(viddata, window)) {
|
if (WINDOW_IS_LIBDECOR(viddata, window)) {
|
||||||
if (wind->shell_surface.libdecor.frame == NULL) {
|
if (wind->shell_surface.libdecor.frame == NULL) {
|
||||||
return; /* Can't do anything yet, wait for ShowWindow */
|
return; /* Can't do anything yet, wait for ShowWindow */
|
||||||
}
|
}
|
||||||
libdecor_frame_set_title(wind->shell_surface.libdecor.frame, window->title);
|
libdecor_frame_set_title(wind->shell_surface.libdecor.frame, title);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
if (viddata->shell.xdg) {
|
if (viddata->shell.xdg) {
|
||||||
if (wind->shell_surface.xdg.roleobj.toplevel == NULL) {
|
if (wind->shell_surface.xdg.roleobj.toplevel == NULL) {
|
||||||
return; /* Can't do anything yet, wait for ShowWindow */
|
return; /* Can't do anything yet, wait for ShowWindow */
|
||||||
}
|
|
||||||
xdg_toplevel_set_title(wind->shell_surface.xdg.roleobj.toplevel, window->title);
|
|
||||||
}
|
}
|
||||||
|
xdg_toplevel_set_title(wind->shell_surface.xdg.roleobj.toplevel, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
WAYLAND_wl_display_flush(viddata->display);
|
WAYLAND_wl_display_flush(viddata->display);
|
||||||
|
|
Loading…
Reference in a new issue