mirror of
https://cagebreak.project-repo.co/cagebreak.git
synced 2026-08-22 13:34:18 +02:00
Merge ipc fixes into development
This commit is contained in:
commit
46f921f636
3 changed files with 28 additions and 21 deletions
|
|
@ -339,6 +339,8 @@ main(int argc, char *argv[]) {
|
|||
wl_event_loop_add_signal(event_loop, SIGTERM, handle_signal, &server);
|
||||
sigalrm_source =
|
||||
wl_event_loop_add_signal(event_loop, SIGALRM, handle_signal, &server);
|
||||
sigalrm_source =
|
||||
wl_event_loop_add_signal(event_loop, SIGPIPE, handle_signal, &server);
|
||||
server.event_loop = event_loop;
|
||||
|
||||
backend = wlr_backend_autocreate(server.wl_display);
|
||||
|
|
|
|||
11
ipc_server.c
11
ipc_server.c
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
static const char ipc_magic[] = {'c', 'g', '-', 'i', 'p', 'c'};
|
||||
|
||||
#define IPC_HEADER_SIZE (sizeof(ipc_magic) + 4)
|
||||
#define IPC_HEADER_SIZE sizeof(ipc_magic)
|
||||
|
||||
static void
|
||||
handle_display_destroy(struct wl_listener *listener, void *data) {
|
||||
|
|
@ -135,6 +135,9 @@ ipc_client_handle_writable(int client_fd, uint32_t mask, void *data) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
if(fcntl(client->fd, F_GETFD) == -1) {
|
||||
return 0;
|
||||
}
|
||||
ssize_t written =
|
||||
write(client->fd, client->write_buffer, client->write_buffer_len);
|
||||
|
||||
|
|
@ -336,9 +339,9 @@ ipc_send_event_client(struct cg_ipc_client *client, const char *payload,
|
|||
char data[IPC_HEADER_SIZE];
|
||||
|
||||
memcpy(data, ipc_magic, sizeof(ipc_magic));
|
||||
memcpy(data + sizeof(ipc_magic), &payload_length, sizeof(payload_length));
|
||||
|
||||
while(client->write_buffer_len + IPC_HEADER_SIZE + payload_length >=
|
||||
// +1 for terminating null character
|
||||
while(client->write_buffer_len + IPC_HEADER_SIZE + payload_length +1 >=
|
||||
client->write_buffer_size) {
|
||||
client->write_buffer_size *= 2;
|
||||
}
|
||||
|
|
@ -365,6 +368,8 @@ ipc_send_event_client(struct cg_ipc_client *client, const char *payload,
|
|||
memcpy(client->write_buffer + client->write_buffer_len, payload,
|
||||
payload_length);
|
||||
client->write_buffer_len += payload_length;
|
||||
memcpy(client->write_buffer + client->write_buffer_len, "\0", 1);
|
||||
client->write_buffer_len += 1;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
36
keybinding.c
36
keybinding.c
|
|
@ -827,13 +827,13 @@ print_view(struct cg_view *view) {
|
|||
char *title_str = view->impl->get_title(view);
|
||||
print_str(&outp_str, "\"title\": \"%s\",\n",
|
||||
title_str == NULL ? "" : title_str);
|
||||
print_str(&outp_str, "\"coords\": [\"x\":%d,\"y\":%d],\n", view->ox,
|
||||
print_str(&outp_str, "\"coords\": {\"x\":%d,\"y\":%d},\n", view->ox,
|
||||
view->oy);
|
||||
#if CG_HAS_XWAYLAND
|
||||
print_str(&outp_str, "\"type\": \"%s\",\n",
|
||||
print_str(&outp_str, "\"type\": \"%s\"\n",
|
||||
view->type == CG_XWAYLAND_VIEW ? "xwayland" : "xdg");
|
||||
#else
|
||||
print_str(&outp_str, "\"type\": \"xdg\",\n");
|
||||
print_str(&outp_str, "\"type\": \"xdg\"\n");
|
||||
#endif
|
||||
return dyn_str_to_str(&outp_str);
|
||||
}
|
||||
|
|
@ -846,11 +846,11 @@ print_tile(struct cg_tile *tile) {
|
|||
uint32_t nmemb = 4;
|
||||
outp_str.str_arr = calloc(nmemb, sizeof(char *));
|
||||
print_str(&outp_str, "\"id\": %d,\n", tile->id);
|
||||
print_str(&outp_str, "\"coords\": [\"x\":%d,\"y\":%d],\n", tile->tile.x,
|
||||
print_str(&outp_str, "\"coords\": {\"x\":%d,\"y\":%d},\n", tile->tile.x,
|
||||
tile->tile.y);
|
||||
print_str(&outp_str, "\"size\": [\"width\":%d,\"height\":%d],\n",
|
||||
print_str(&outp_str, "\"size\": {\"width\":%d,\"height\":%d},\n",
|
||||
tile->tile.width, tile->tile.height);
|
||||
print_str(&outp_str, "\"view\": \"%d\",\n",
|
||||
print_str(&outp_str, "\"view\": \"%d\"\n",
|
||||
tile->view == NULL ? -1 : (int)tile->view->id);
|
||||
return dyn_str_to_str(&outp_str);
|
||||
}
|
||||
|
|
@ -954,7 +954,7 @@ print_workspaces(struct cg_output *outp) {
|
|||
free(ws);
|
||||
}
|
||||
}
|
||||
print_str(&outp_str, "],\n");
|
||||
print_str(&outp_str, "]\n");
|
||||
return dyn_str_to_str(&outp_str);
|
||||
}
|
||||
|
||||
|
|
@ -969,9 +969,9 @@ print_output(struct cg_output *outp) {
|
|||
print_str(&outp_str, "\"%s\": {\n", outp->wlr_output->name);
|
||||
print_str(&outp_str, "\"priority\": %d,\n", outp->priority);
|
||||
if(outp_box!=NULL) {
|
||||
print_str(&outp_str, "\"coords\": [\"x\":%d,\"y\":%d],\n", outp_box->x,outp_box->y);
|
||||
print_str(&outp_str, "\"coords\": {\"x\":%d,\"y\":%d},\n", outp_box->x,outp_box->y);
|
||||
}
|
||||
print_str(&outp_str, "\"size\": [\"width\":%d,\"height\":%d]\n", outp->wlr_output->width,outp->wlr_output->height);
|
||||
print_str(&outp_str, "\"size\": {\"width\":%d,\"height\":%d},\n", outp->wlr_output->width,outp->wlr_output->height);
|
||||
print_str(&outp_str, "\"refresh_rate\": %f,\n", (float) outp->wlr_output->refresh/1000.0);
|
||||
print_str(&outp_str, "\"curr_workspace\": %d,\n", outp->curr_workspace);
|
||||
char *workspaces_str = print_workspaces(outp);
|
||||
|
|
@ -990,7 +990,7 @@ print_outputs(struct cg_server *server) {
|
|||
outp_str.len = 0;
|
||||
outp_str.cur_pos = 0;
|
||||
outp_str.str_arr = calloc((2 * noutps - 1) + 2, sizeof(char *));
|
||||
print_str(&outp_str, "\"outputs\": [");
|
||||
print_str(&outp_str, "\"outputs\": {");
|
||||
struct cg_output *it;
|
||||
uint32_t count = 0;
|
||||
wl_list_for_each(it, &server->outputs, link) {
|
||||
|
|
@ -1005,7 +1005,7 @@ print_outputs(struct cg_server *server) {
|
|||
print_str(&outp_str, "%s", outp);
|
||||
free(outp);
|
||||
}
|
||||
print_str(&outp_str, "],\n");
|
||||
print_str(&outp_str, "}\n");
|
||||
return dyn_str_to_str(&outp_str);
|
||||
}
|
||||
|
||||
|
|
@ -1022,7 +1022,7 @@ print_keyboard_group(struct cg_keyboard_group *grp) {
|
|||
print_str(&outp_str, "\"NULL\": {\n");
|
||||
}
|
||||
print_str(&outp_str, "\"repeat_delay\": %d,\n", grp->wlr_group->keyboard.repeat_info.delay);
|
||||
print_str(&outp_str, "\"repeat_rate\": %d,\n", grp->wlr_group->keyboard.repeat_info.rate);
|
||||
print_str(&outp_str, "\"repeat_rate\": %d\n", grp->wlr_group->keyboard.repeat_info.rate);
|
||||
print_str(&outp_str, "}");
|
||||
return dyn_str_to_str(&outp_str);
|
||||
}
|
||||
|
|
@ -1034,7 +1034,7 @@ print_keyboard_groups(struct cg_server *server) {
|
|||
outp_str.len = 0;
|
||||
outp_str.cur_pos = 0;
|
||||
outp_str.str_arr = calloc((2 * ninps - 1) + 2, sizeof(char *));
|
||||
print_str(&outp_str, "\"keyboards\": [");
|
||||
print_str(&outp_str, "\"keyboards\": {");
|
||||
struct cg_keyboard_group *it;
|
||||
uint32_t count = 0;
|
||||
wl_list_for_each(it, &server->seat->keyboard_groups, link) {
|
||||
|
|
@ -1049,7 +1049,7 @@ print_keyboard_groups(struct cg_server *server) {
|
|||
print_str(&outp_str, "%s", outp);
|
||||
free(outp);
|
||||
}
|
||||
print_str(&outp_str, "],\n");
|
||||
print_str(&outp_str, "}\n");
|
||||
return dyn_str_to_str(&outp_str);
|
||||
}
|
||||
|
||||
|
|
@ -1067,20 +1067,20 @@ keybinding_dump(struct cg_server *server) {
|
|||
server->bg_color[1], server->bg_color[2], server->bg_color[3]);
|
||||
print_str(&str, "\"views_curr_id\":%d,\n", server->views_curr_id);
|
||||
print_str(&str, "\"tiles_curr_id\":%d,\n", server->tiles_curr_id);
|
||||
print_str(&str, "\"curr_output\":%s,\n",
|
||||
print_str(&str, "\"curr_output\":\"%s\",\n",
|
||||
server->curr_output->wlr_output->name);
|
||||
print_modes(&str, server->modes);
|
||||
char *outps_str = print_outputs(server);
|
||||
if(outps_str!=NULL) {
|
||||
print_str(&str, "%s", outps_str);
|
||||
print_str(&str, "%s,", outps_str);
|
||||
free(outps_str);
|
||||
}
|
||||
char *keyboards_str = print_keyboard_groups(server);
|
||||
if(keyboards_str!=NULL) {
|
||||
print_str(&str, "%s", keyboards_str);
|
||||
print_str(&str, "%s,", keyboards_str);
|
||||
free(keyboards_str);
|
||||
}
|
||||
print_str(&str, "\"cursor_coords\":{\"x\":%f,\"y\":%f},\n",
|
||||
print_str(&str, "\"cursor_coords\":{\"x\":%f,\"y\":%f}\n",
|
||||
server->seat->cursor->x, server->seat->cursor->y);
|
||||
print_str(&str, "}");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue