mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 00:32:57 -04:00
x11: Support _NET_WM_PING
This commit is contained in:
parent
b6dd2b8ec1
commit
f593026061
@ -377,6 +377,7 @@ x11GraphicsPipe(const std::string &display) :
|
|||||||
// Get some X atom numbers.
|
// Get some X atom numbers.
|
||||||
_wm_delete_window = XInternAtom(_display, "WM_DELETE_WINDOW", false);
|
_wm_delete_window = XInternAtom(_display, "WM_DELETE_WINDOW", false);
|
||||||
_net_wm_pid = XInternAtom(_display, "_NET_WM_PID", false);
|
_net_wm_pid = XInternAtom(_display, "_NET_WM_PID", false);
|
||||||
|
_net_wm_ping = XInternAtom(_display, "_NET_WM_PING", false);
|
||||||
_net_wm_window_type = XInternAtom(_display, "_NET_WM_WINDOW_TYPE", false);
|
_net_wm_window_type = XInternAtom(_display, "_NET_WM_WINDOW_TYPE", false);
|
||||||
_net_wm_window_type_splash = XInternAtom(_display, "_NET_WM_WINDOW_TYPE_SPLASH", false);
|
_net_wm_window_type_splash = XInternAtom(_display, "_NET_WM_WINDOW_TYPE_SPLASH", false);
|
||||||
_net_wm_window_type_fullscreen = XInternAtom(_display, "_NET_WM_WINDOW_TYPE_FULLSCREEN", false);
|
_net_wm_window_type_fullscreen = XInternAtom(_display, "_NET_WM_WINDOW_TYPE_FULLSCREEN", false);
|
||||||
|
@ -167,6 +167,7 @@ public:
|
|||||||
// Atom specifications.
|
// Atom specifications.
|
||||||
Atom _wm_delete_window;
|
Atom _wm_delete_window;
|
||||||
Atom _net_wm_pid;
|
Atom _net_wm_pid;
|
||||||
|
Atom _net_wm_ping;
|
||||||
Atom _net_wm_window_type;
|
Atom _net_wm_window_type;
|
||||||
Atom _net_wm_window_type_splash;
|
Atom _net_wm_window_type_splash;
|
||||||
Atom _net_wm_window_type_fullscreen;
|
Atom _net_wm_window_type_fullscreen;
|
||||||
|
@ -120,6 +120,7 @@ x11GraphicsWindow(GraphicsEngine *engine, GraphicsPipe *pipe,
|
|||||||
_raw_mouse_enabled = false;
|
_raw_mouse_enabled = false;
|
||||||
_override_redirect = False;
|
_override_redirect = False;
|
||||||
_wm_delete_window = x11_pipe->_wm_delete_window;
|
_wm_delete_window = x11_pipe->_wm_delete_window;
|
||||||
|
_net_wm_ping = x11_pipe->_net_wm_ping;
|
||||||
|
|
||||||
PT(GraphicsWindowInputDevice) device = GraphicsWindowInputDevice::pointer_and_keyboard(this, "keyboard_mouse");
|
PT(GraphicsWindowInputDevice) device = GraphicsWindowInputDevice::pointer_and_keyboard(this, "keyboard_mouse");
|
||||||
add_input_device(device);
|
add_input_device(device);
|
||||||
@ -513,6 +514,12 @@ process_events() {
|
|||||||
system_changed_properties(properties);
|
system_changed_properties(properties);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ((Atom)(event.xclient.data.l[0]) == _net_wm_ping &&
|
||||||
|
event.xclient.window == _xwindow) {
|
||||||
|
DCAST_INTO_V(x11_pipe, _pipe);
|
||||||
|
event.xclient.window = x11_pipe->get_root();
|
||||||
|
XSendEvent(_display, x11_pipe->get_root(), False, SubstructureRedirectMask | SubstructureNotifyMask, &event);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DestroyNotify:
|
case DestroyNotify:
|
||||||
@ -1480,9 +1487,6 @@ set_wm_properties(const WindowProperties &properties, bool already_mapped) {
|
|||||||
// mapped. To do this, we need to send a client message to the root
|
// mapped. To do this, we need to send a client message to the root
|
||||||
// window for each change.
|
// window for each change.
|
||||||
|
|
||||||
x11GraphicsPipe *x11_pipe;
|
|
||||||
DCAST_INTO_V(x11_pipe, _pipe);
|
|
||||||
|
|
||||||
for (int i = 0; i < next_set_data; ++i) {
|
for (int i = 0; i < next_set_data; ++i) {
|
||||||
XClientMessageEvent event;
|
XClientMessageEvent event;
|
||||||
memset(&event, 0, sizeof(event));
|
memset(&event, 0, sizeof(event));
|
||||||
@ -1519,6 +1523,7 @@ set_wm_properties(const WindowProperties &properties, bool already_mapped) {
|
|||||||
// X server if the user requests a window close.
|
// X server if the user requests a window close.
|
||||||
Atom protocols[] = {
|
Atom protocols[] = {
|
||||||
_wm_delete_window,
|
_wm_delete_window,
|
||||||
|
_net_wm_ping,
|
||||||
};
|
};
|
||||||
|
|
||||||
XSetWMProtocols(_display, _xwindow, protocols,
|
XSetWMProtocols(_display, _xwindow, protocols,
|
||||||
|
@ -108,6 +108,7 @@ protected:
|
|||||||
bool _raw_mouse_enabled;
|
bool _raw_mouse_enabled;
|
||||||
Bool _override_redirect;
|
Bool _override_redirect;
|
||||||
Atom _wm_delete_window;
|
Atom _wm_delete_window;
|
||||||
|
Atom _net_wm_ping;
|
||||||
|
|
||||||
x11GraphicsPipe::pfn_XRRGetScreenInfo _XRRGetScreenInfo;
|
x11GraphicsPipe::pfn_XRRGetScreenInfo _XRRGetScreenInfo;
|
||||||
x11GraphicsPipe::pfn_XRRSetScreenConfig _XRRSetScreenConfig;
|
x11GraphicsPipe::pfn_XRRSetScreenConfig _XRRSetScreenConfig;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user