move i3 sync code into sync_respond (for following commits)
This commit is contained in:
parent
4e0bf58109
commit
725ee3ce62
|
@ -562,6 +562,7 @@ i3_SOURCES = \
|
||||||
src/sd-daemon.c \
|
src/sd-daemon.c \
|
||||||
src/sighandler.c \
|
src/sighandler.c \
|
||||||
src/startup.c \
|
src/startup.c \
|
||||||
|
src/sync.c \
|
||||||
src/tree.c \
|
src/tree.c \
|
||||||
src/util.c \
|
src/util.c \
|
||||||
src/version.c \
|
src/version.c \
|
||||||
|
|
|
@ -82,4 +82,5 @@
|
||||||
#include "fake_outputs.h"
|
#include "fake_outputs.h"
|
||||||
#include "display_version.h"
|
#include "display_version.h"
|
||||||
#include "restore_layout.h"
|
#include "restore_layout.h"
|
||||||
|
#include "sync.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* vim:ts=4:sw=4:expandtab
|
||||||
|
*
|
||||||
|
* i3 - an improved dynamic tiling window manager
|
||||||
|
* © 2009 Michael Stapelberg and contributors (see also: LICENSE)
|
||||||
|
*
|
||||||
|
* sync.c: i3 sync protocol: https://i3wm.org/docs/testsuite.html#i3_sync
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xcb/xcb.h>
|
||||||
|
|
||||||
|
void sync_respond(xcb_window_t window, uint32_t rnd);
|
|
@ -800,21 +800,7 @@ static void handle_client_message(xcb_client_message_event_t *event) {
|
||||||
} else if (event->type == A_I3_SYNC) {
|
} else if (event->type == A_I3_SYNC) {
|
||||||
xcb_window_t window = event->data.data32[0];
|
xcb_window_t window = event->data.data32[0];
|
||||||
uint32_t rnd = event->data.data32[1];
|
uint32_t rnd = event->data.data32[1];
|
||||||
DLOG("[i3 sync protocol] Sending random value %d back to X11 window 0x%08x\n", rnd, window);
|
sync_respond(window, rnd);
|
||||||
|
|
||||||
void *reply = scalloc(32, 1);
|
|
||||||
xcb_client_message_event_t *ev = reply;
|
|
||||||
|
|
||||||
ev->response_type = XCB_CLIENT_MESSAGE;
|
|
||||||
ev->window = window;
|
|
||||||
ev->type = A_I3_SYNC;
|
|
||||||
ev->format = 32;
|
|
||||||
ev->data.data32[0] = window;
|
|
||||||
ev->data.data32[1] = rnd;
|
|
||||||
|
|
||||||
xcb_send_event(conn, false, window, XCB_EVENT_MASK_NO_EVENT, (char *)ev);
|
|
||||||
xcb_flush(conn);
|
|
||||||
free(reply);
|
|
||||||
} else if (event->type == A__NET_REQUEST_FRAME_EXTENTS) {
|
} else if (event->type == A__NET_REQUEST_FRAME_EXTENTS) {
|
||||||
/*
|
/*
|
||||||
* A client can request an estimate for the frame size which the window
|
* A client can request an estimate for the frame size which the window
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
/*
|
||||||
|
* vim:ts=4:sw=4:expandtab
|
||||||
|
*
|
||||||
|
* i3 - an improved dynamic tiling window manager
|
||||||
|
* © 2009 Michael Stapelberg and contributors (see also: LICENSE)
|
||||||
|
*
|
||||||
|
* sync.c: i3 sync protocol: https://i3wm.org/docs/testsuite.html#i3_sync
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include "all.h"
|
||||||
|
|
||||||
|
void sync_respond(xcb_window_t window, uint32_t rnd) {
|
||||||
|
DLOG("[i3 sync protocol] Sending random value %d back to X11 window 0x%08x\n", rnd, window);
|
||||||
|
|
||||||
|
void *reply = scalloc(32, 1);
|
||||||
|
xcb_client_message_event_t *ev = reply;
|
||||||
|
|
||||||
|
ev->response_type = XCB_CLIENT_MESSAGE;
|
||||||
|
ev->window = window;
|
||||||
|
ev->type = A_I3_SYNC;
|
||||||
|
ev->format = 32;
|
||||||
|
ev->data.data32[0] = window;
|
||||||
|
ev->data.data32[1] = rnd;
|
||||||
|
|
||||||
|
xcb_send_event(conn, false, window, XCB_EVENT_MASK_NO_EVENT, (char *)ev);
|
||||||
|
xcb_flush(conn);
|
||||||
|
free(reply);
|
||||||
|
}
|
Loading…
Reference in New Issue