diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index b32b9a2c89..32bf1c8a9f 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -694,6 +694,18 @@ typedef enum _Ecore_X_WM_Protocol { */ ECORE_X_WM_PROTOCOL_TAKE_FOCUS, + /** + * If enabled the window manager can ping the window to check + * if it is alive. + */ + ECORE_X_NET_WM_PROTOCOL_PING, + + /** + * If enabled the window manager can sync updating with the + * window (?) + */ + ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST, + /* Number of defined items */ ECORE_X_WM_PROTOCOL_NUM } Ecore_X_WM_Protocol; diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h b/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h index d591f6338a..04c136700e 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h @@ -113,6 +113,9 @@ extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_OPACITY; extern Ecore_X_Atom ECORE_X_ATOM_NET_FRAME_EXTENTS; extern Ecore_X_Atom ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS; +extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_PING; +extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST; + /* Selections */ extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_TARGETS; extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PRIMARY; diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x.c b/legacy/ecore/src/lib/ecore_x/ecore_x.c index 381cd21c21..c2dde8f12e 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x.c @@ -368,6 +368,8 @@ ecore_x_init(const char *name) _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = ECORE_X_ATOM_WM_DELETE_WINDOW; _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = ECORE_X_ATOM_WM_TAKE_FOCUS; + _ecore_x_atoms_wm_protocols[ECORE_X_NET_WM_PROTOCOL_PING] = ECORE_X_ATOM_NET_WM_PING; + _ecore_x_atoms_wm_protocols[ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST] = ECORE_X_ATOM_NET_WM_SYNC_REQUEST; _ecore_x_selection_data_init(); _ecore_x_dnd_init(); diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c b/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c index 0eaa29fbf6..ffb4a02013 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c @@ -266,6 +266,9 @@ Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_OPACITY = 0; Ecore_X_Atom ECORE_X_ATOM_NET_FRAME_EXTENTS = 0; Ecore_X_Atom ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS = 0; +Ecore_X_Atom ECORE_X_ATOM_NET_WM_PING = 0; +Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST = 0; + void ecore_x_netwm_init(void) { @@ -357,6 +360,9 @@ ecore_x_netwm_init(void) ECORE_X_ATOM_NET_FRAME_EXTENTS = _ATOM_GET("_NET_FRAME_EXTENTS"); ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS = _ATOM_GET("_NET_REQUEST_FRAME_EXTENTS"); + + ECORE_X_ATOM_NET_WM_PING = _ATOM_GET("_NET_WM_PING"); + ECORE_X_ATOM_NET_WM_SYNC_REQUEST = _ATOM_GET("_NET_WM_SYNC_REQUEST"); } /* diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_window_prop.c b/legacy/ecore/src/lib/ecore_x/ecore_x_window_prop.c index 261e21264d..83d7a7d87c 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_window_prop.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_window_prop.c @@ -614,6 +614,7 @@ ecore_x_window_prop_protocol_list_get(Ecore_X_Window win, int *num_ret) { Ecore_X_WM_Protocol j; + prot_ret[i] = -1; for (j = 0; j < ECORE_X_WM_PROTOCOL_NUM; j++) { if (_ecore_x_atoms_wm_protocols[j] == protos[i])