use Exporter ();
our @EXPORT = qw(
inlinec_connect
+ xtest_sync_with
xtest_sync_with_i3
set_xkb_group
xtest_key_press
return true;
}
-void xtest_sync_with_i3() {
+void xtest_sync_with(int window) {
xcb_client_message_event_t ev;
memset(&ev, '\0', sizeof(xcb_client_message_event_t));
ev.data.data32[0] = sync_window;
ev.data.data32[1] = nonce;
- xcb_send_event(conn, false, root_window, XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (char *)&ev);
+ xcb_send_event(conn, false, (xcb_window_t)window, XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (char *)&ev);
xcb_flush(conn);
xcb_generic_event_t *event = NULL;
free(event);
}
+void xtest_sync_with_i3() {
+ xtest_sync_with((int)root_window);
+}
+
// NOTE: while |group| should be a uint8_t, Inline::C will not define the
// function unless we use an int.
bool set_xkb_group(int group) {
Returns false when there was an X11 error, true otherwise.
+=head2 xtest_sync_with($window)
+
+Ensures the specified window has processed all X11 events which were triggered
+by this module, provided the window response to the i3 sync protocol.
+
=head2 xtest_sync_with_i3()
Ensures i3 has processed all X11 events which were triggered by this module.