window get title: cleanup data

This commit is contained in:
dec05eba
2025-02-10 19:40:22 +01:00
parent fc2f6f4c50
commit 1734d48af6
3 changed files with 20 additions and 24 deletions

View File

@@ -33,11 +33,10 @@ namespace gsr {
return false; return false;
thread = std::thread([this]() { thread = std::thread([this]() {
const pa_sample_spec ss = { pa_sample_spec ss;
.format = PA_SAMPLE_S16LE, ss.format = PA_SAMPLE_S16LE;
.rate = 48000, ss.rate = 48000;
.channels = 2 ss.channels = 2;
};
pa_simple *s = NULL; pa_simple *s = NULL;
int error; int error;

View File

@@ -229,15 +229,6 @@ namespace gsr {
return is_fullscreen; return is_fullscreen;
} }
static void set_focused_window(Display *dpy, Window window) {
XSetInputFocus(dpy, window, RevertToPointerRoot, CurrentTime);
const Atom net_active_window_atom = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
XChangeProperty(dpy, DefaultRootWindow(dpy), net_active_window_atom, XA_WINDOW, 32, PropModeReplace, (const unsigned char*)&window, 1);
XFlush(dpy);
}
#define _NET_WM_STATE_REMOVE 0 #define _NET_WM_STATE_REMOVE 0
#define _NET_WM_STATE_ADD 1 #define _NET_WM_STATE_ADD 1
#define _NET_WM_STATE_TOGGLE 2 #define _NET_WM_STATE_TOGGLE 2
@@ -1171,11 +1162,6 @@ namespace gsr {
// Owlboy seems to use xi events and XGrabPointer doesn't prevent owlboy from receiving events. // Owlboy seems to use xi events and XGrabPointer doesn't prevent owlboy from receiving events.
xi_grab_all_mouse_devices(); xi_grab_all_mouse_devices();
// if(gsr_info.system_info.display_server == DisplayServer::WAYLAND) {
// set_focused_window(display, window->get_system_handle());
// XFlush(display);
// }
if(!is_wlroots) if(!is_wlroots)
window->set_fullscreen(true); window->set_fullscreen(true);

View File

@@ -171,6 +171,7 @@ namespace gsr {
} }
std::optional<std::string> get_window_title(Display *dpy, Window window) { std::optional<std::string> get_window_title(Display *dpy, Window window) {
std::optional<std::string> result;
const Atom net_wm_name_atom = XInternAtom(dpy, "_NET_WM_NAME", False); const Atom net_wm_name_atom = XInternAtom(dpy, "_NET_WM_NAME", False);
const Atom wm_name_atom = XInternAtom(dpy, "WM_NAME", False); const Atom wm_name_atom = XInternAtom(dpy, "WM_NAME", False);
const Atom utf8_string_atom = XInternAtom(dpy, "UTF8_STRING", False); const Atom utf8_string_atom = XInternAtom(dpy, "UTF8_STRING", False);
@@ -182,8 +183,13 @@ namespace gsr {
unsigned char *data = NULL; unsigned char *data = NULL;
XGetWindowProperty(dpy, window, net_wm_name_atom, 0, 1024, False, utf8_string_atom, &type, &format, &num_items, &bytes_left, &data); XGetWindowProperty(dpy, window, net_wm_name_atom, 0, 1024, False, utf8_string_atom, &type, &format, &num_items, &bytes_left, &data);
if(type == utf8_string_atom && format == 8 && data) if(type == utf8_string_atom && format == 8 && data) {
return utf8_sanitize(data, num_items); result = utf8_sanitize(data, num_items);
goto done;
}
if(data)
XFree(data);
type = None; type = None;
format = 0; format = 0;
@@ -192,10 +198,15 @@ namespace gsr {
data = NULL; data = NULL;
XGetWindowProperty(dpy, window, wm_name_atom, 0, 1024, False, 0, &type, &format, &num_items, &bytes_left, &data); XGetWindowProperty(dpy, window, wm_name_atom, 0, 1024, False, 0, &type, &format, &num_items, &bytes_left, &data);
if((type == XA_STRING || type == utf8_string_atom) && data) if((type == XA_STRING || type == utf8_string_atom) && data) {
return utf8_sanitize(data, num_items); result = utf8_sanitize(data, num_items);
goto done;
}
return std::nullopt; done:
if(data)
XFree(data);
return result;
} }
static std::string strip(const std::string &str) { static std::string strip(const std::string &str) {