mirror of
https://github.com/swaywm/sway.git
synced 2026-04-29 06:46:22 -04:00
Got it to build.
This commit is contained in:
parent
46a53704ad
commit
a2896f33a4
55 changed files with 822 additions and 797 deletions
|
|
@ -19,7 +19,7 @@
|
|||
static void bar_init(struct bar *bar) {
|
||||
bar->config = init_config();
|
||||
bar->status = init_status_line();
|
||||
bar->outputs = create_list();
|
||||
bar->outputs = list_new(sizeof(struct output *), 0);
|
||||
}
|
||||
|
||||
static void spawn_status_cmd_proc(struct bar *bar) {
|
||||
|
|
@ -55,7 +55,7 @@ struct output *new_output(const char *name) {
|
|||
output->name = strdup(name);
|
||||
output->window = NULL;
|
||||
output->registry = NULL;
|
||||
output->workspaces = create_list();
|
||||
output->workspaces = list_new(sizeof(struct workspace *), 0);
|
||||
return output;
|
||||
}
|
||||
|
||||
|
|
@ -67,8 +67,8 @@ static void mouse_button_notify(struct window *window, int x, int y,
|
|||
}
|
||||
|
||||
struct output *clicked_output = NULL;
|
||||
for (int i = 0; i < swaybar.outputs->length; i++) {
|
||||
struct output *output = swaybar.outputs->items[i];
|
||||
for (size_t i = 0; i < swaybar.outputs->length; i++) {
|
||||
struct output *output = *(struct output **)list_get(swaybar.outputs, i);
|
||||
if (window == output->window) {
|
||||
clicked_output = output;
|
||||
break;
|
||||
|
|
@ -80,8 +80,8 @@ static void mouse_button_notify(struct window *window, int x, int y,
|
|||
}
|
||||
|
||||
double button_x = 0.5;
|
||||
for (int i = 0; i < clicked_output->workspaces->length; i++) {
|
||||
struct workspace *workspace = clicked_output->workspaces->items[i];
|
||||
for (size_t i = 0; i < clicked_output->workspaces->length; i++) {
|
||||
struct workspace *workspace = *(struct workspace **)list_get(clicked_output->workspaces, i);
|
||||
int button_width, button_height;
|
||||
|
||||
workspace_button_size(window, workspace->name, &button_width, &button_height);
|
||||
|
|
@ -95,14 +95,14 @@ static void mouse_button_notify(struct window *window, int x, int y,
|
|||
}
|
||||
|
||||
static void mouse_scroll_notify(struct window *window, enum scroll_direction direction) {
|
||||
size_t i;
|
||||
sway_log(L_DEBUG, "Mouse wheel scrolled %s", direction == SCROLL_UP ? "up" : "down");
|
||||
|
||||
if (!swaybar.config->wrap_scroll) {
|
||||
// Find output this window lives on
|
||||
int i;
|
||||
struct output *output = NULL;
|
||||
for (i = 0; i < swaybar.outputs->length; ++i) {
|
||||
output = swaybar.outputs->items[i];
|
||||
output = *(struct output **)list_get(swaybar.outputs, i);
|
||||
if (output->window == window) {
|
||||
break;
|
||||
}
|
||||
|
|
@ -112,7 +112,7 @@ static void mouse_scroll_notify(struct window *window, enum scroll_direction dir
|
|||
}
|
||||
int focused = -1;
|
||||
for (i = 0; i < output->workspaces->length; ++i) {
|
||||
struct workspace *ws = output->workspaces->items[i];
|
||||
struct workspace *ws = *(struct workspace **)list_get(output->workspaces, i);
|
||||
if (ws->focused) {
|
||||
focused = i;
|
||||
break;
|
||||
|
|
@ -122,7 +122,7 @@ static void mouse_scroll_notify(struct window *window, enum scroll_direction dir
|
|||
return;
|
||||
}
|
||||
if ((focused == 0 && direction == SCROLL_UP) ||
|
||||
(focused == output->workspaces->length - 1 && direction == SCROLL_DOWN)) {
|
||||
(focused == (ssize_t)output->workspaces->length - 1 && direction == SCROLL_DOWN)) {
|
||||
// Do not wrap
|
||||
return;
|
||||
}
|
||||
|
|
@ -142,9 +142,8 @@ void bar_setup(struct bar *bar, const char *socket_path, const char *bar_id) {
|
|||
|
||||
ipc_bar_init(bar, bar_id);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *bar_output = bar->outputs->items[i];
|
||||
for (size_t i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *bar_output = *(struct output **)list_get(bar->outputs, i);
|
||||
|
||||
bar_output->registry = registry_poll();
|
||||
|
||||
|
|
@ -152,7 +151,7 @@ void bar_setup(struct bar *bar, const char *socket_path, const char *bar_id) {
|
|||
sway_abort("swaybar requires the compositor to support the desktop-shell extension.");
|
||||
}
|
||||
|
||||
struct output_state *output = bar_output->registry->outputs->items[bar_output->idx];
|
||||
struct output_state *output = *(struct output_state **)list_get(bar_output->registry->outputs, bar_output->idx);
|
||||
|
||||
bar_output->window = window_setup(bar_output->registry,
|
||||
output->width / output->scale, 30, output->scale, false);
|
||||
|
|
@ -190,18 +189,16 @@ void bar_run(struct bar *bar) {
|
|||
pfd[1].fd = bar->status_read_fd;
|
||||
pfd[1].events = POLLIN;
|
||||
|
||||
int i;
|
||||
for (i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = bar->outputs->items[i];
|
||||
for (size_t i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = *(struct output **)list_get(bar->outputs, i);
|
||||
pfd[i+2].fd = wl_display_get_fd(output->registry->display);
|
||||
pfd[i+2].events = POLLIN;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
if (dirty) {
|
||||
int i;
|
||||
for (i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = bar->outputs->items[i];
|
||||
for (size_t i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = *(struct output **)list_get(bar->outputs, i);
|
||||
if (window_prerender(output->window) && output->window->cairo) {
|
||||
render(output, bar->config, bar->status);
|
||||
window_render(output->window);
|
||||
|
|
@ -225,8 +222,8 @@ void bar_run(struct bar *bar) {
|
|||
}
|
||||
|
||||
// dispatch wl_display events
|
||||
for (i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = bar->outputs->items[i];
|
||||
for (size_t i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = *(struct output **)list_get(bar->outputs, i);
|
||||
if (pfd[i+2].revents & POLLIN) {
|
||||
if (wl_display_dispatch(output->registry->display) == -1) {
|
||||
sway_log(L_ERROR, "failed to dispatch wl: %d", errno);
|
||||
|
|
@ -239,9 +236,8 @@ void bar_run(struct bar *bar) {
|
|||
}
|
||||
|
||||
void free_workspaces(list_t *workspaces) {
|
||||
int i;
|
||||
for (i = 0; i < workspaces->length; ++i) {
|
||||
struct workspace *ws = workspaces->items[i];
|
||||
for (size_t i = 0; i < workspaces->length; ++i) {
|
||||
struct workspace *ws = *(struct workspace **)list_get(workspaces, i);
|
||||
free(ws->name);
|
||||
free(ws);
|
||||
}
|
||||
|
|
@ -264,9 +260,9 @@ static void free_output(struct output *output) {
|
|||
}
|
||||
|
||||
static void free_outputs(list_t *outputs) {
|
||||
int i;
|
||||
for (i = 0; i < outputs->length; ++i) {
|
||||
free_output(outputs->items[i]);
|
||||
for (size_t i = 0; i < outputs->length; ++i) {
|
||||
struct output *item = *(struct output **)list_get(outputs, i);
|
||||
free_output(item);
|
||||
}
|
||||
list_free(outputs);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ struct config *init_config() {
|
|||
config->wrap_scroll = false;
|
||||
config->workspace_buttons = true;
|
||||
config->all_outputs = false;
|
||||
config->outputs = create_list();
|
||||
config->outputs = list_new(sizeof(char *), 0);
|
||||
|
||||
/* height */
|
||||
config->height = 0;
|
||||
|
|
|
|||
|
|
@ -84,25 +84,25 @@ static void ipc_parse_config(struct config *config, const char *payload) {
|
|||
}
|
||||
|
||||
// free previous outputs list
|
||||
int i;
|
||||
for (i = 0; i < config->outputs->length; ++i) {
|
||||
free(config->outputs->items[i]);
|
||||
for (size_t i = 0; i < config->outputs->length; ++i) {
|
||||
free(*(char **)list_get(config->outputs, i));
|
||||
}
|
||||
list_free(config->outputs);
|
||||
config->outputs = create_list();
|
||||
config->outputs = list_new(sizeof(char *), 0);
|
||||
|
||||
if (outputs) {
|
||||
int length = json_object_array_length(outputs);
|
||||
json_object *output;
|
||||
const char *output_str;
|
||||
for (i = 0; i < length; ++i) {
|
||||
for (int i = 0; i < length; ++i) {
|
||||
output = json_object_array_get_idx(outputs, i);
|
||||
output_str = json_object_get_string(output);
|
||||
if (strcmp("*", output_str) == 0) {
|
||||
config->all_outputs = true;
|
||||
break;
|
||||
}
|
||||
list_add(config->outputs, strdup(output_str));
|
||||
char *ptr = strdup(output_str);
|
||||
list_add(config->outputs, &ptr);
|
||||
}
|
||||
} else {
|
||||
config->all_outputs = true;
|
||||
|
|
@ -214,13 +214,12 @@ static void ipc_parse_config(struct config *config, const char *payload) {
|
|||
}
|
||||
|
||||
static void ipc_update_workspaces(struct bar *bar) {
|
||||
int i;
|
||||
for (i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = bar->outputs->items[i];
|
||||
for (size_t i = 0; i < bar->outputs->length; ++i) {
|
||||
struct output *output = *(struct output **)list_get(bar->outputs, i);
|
||||
if (output->workspaces) {
|
||||
free_workspaces(output->workspaces);
|
||||
}
|
||||
output->workspaces = create_list();
|
||||
output->workspaces = list_new(sizeof(struct workspace *), 0);
|
||||
}
|
||||
|
||||
uint32_t len = 0;
|
||||
|
|
@ -234,7 +233,7 @@ static void ipc_update_workspaces(struct bar *bar) {
|
|||
int length = json_object_array_length(results);
|
||||
json_object *ws_json;
|
||||
json_object *num, *name, *visible, *focused, *out, *urgent;
|
||||
for (i = 0; i < length; ++i) {
|
||||
for (int i = 0; i < length; ++i) {
|
||||
ws_json = json_object_array_get_idx(results, i);
|
||||
|
||||
json_object_object_get_ex(ws_json, "num", &num);
|
||||
|
|
@ -244,9 +243,8 @@ static void ipc_update_workspaces(struct bar *bar) {
|
|||
json_object_object_get_ex(ws_json, "output", &out);
|
||||
json_object_object_get_ex(ws_json, "urgent", &urgent);
|
||||
|
||||
int j;
|
||||
for (j = 0; j < bar->outputs->length; ++j) {
|
||||
struct output *output = bar->outputs->items[j];
|
||||
for (size_t j = 0; j < bar->outputs->length; ++j) {
|
||||
struct output *output = *(struct output **)list_get(bar->outputs, j);
|
||||
if (strcmp(json_object_get_string(out), output->name) == 0) {
|
||||
struct workspace *ws = malloc(sizeof(struct workspace));
|
||||
ws->num = json_object_get_int(num);
|
||||
|
|
@ -261,7 +259,7 @@ static void ipc_update_workspaces(struct bar *bar) {
|
|||
output->focused = true;
|
||||
}
|
||||
ws->urgent = json_object_get_boolean(urgent);
|
||||
list_add(output->workspaces, ws);
|
||||
list_add(output->workspaces, &ws);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -301,9 +299,8 @@ void ipc_bar_init(struct bar *bar, const char *bar_id) {
|
|||
if (bar->config->all_outputs) {
|
||||
use_output = true;
|
||||
} else {
|
||||
int j = 0;
|
||||
for (j = 0; j < bar->config->outputs->length; ++j) {
|
||||
const char *conf_name = bar->config->outputs->items[j];
|
||||
for (size_t j = 0; j < bar->config->outputs->length; ++j) {
|
||||
const char *conf_name = *(char **)list_get(bar->config->outputs, j);
|
||||
if (strcasecmp(name, conf_name) == 0) {
|
||||
use_output = true;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -275,8 +275,6 @@ static void render_binding_mode_indicator(struct window *window, struct config *
|
|||
}
|
||||
|
||||
void render(struct output *output, struct config *config, struct status_line *line) {
|
||||
int i;
|
||||
|
||||
struct window *window = output->window;
|
||||
cairo_t *cairo = window->cairo;
|
||||
bool is_focused = output->focused;
|
||||
|
|
@ -316,8 +314,8 @@ void render(struct output *output, struct config *config, struct status_line *li
|
|||
} else if (line->protocol == I3BAR && line->block_line) {
|
||||
double pos = (window->width * window->scale) - 0.5;
|
||||
bool edge = true;
|
||||
for (i = line->block_line->length - 1; i >= 0; --i) {
|
||||
struct status_block *block = line->block_line->items[i];
|
||||
for (ssize_t i = line->block_line->length - 1; i >= 0; --i) {
|
||||
struct status_block *block = *(struct status_block **)list_get(line->block_line, i);
|
||||
if (block->full_text && block->full_text[0]) {
|
||||
render_block(window, config, block, &pos, edge, is_focused);
|
||||
edge = false;
|
||||
|
|
@ -330,8 +328,8 @@ void render(struct output *output, struct config *config, struct status_line *li
|
|||
|
||||
// Workspaces
|
||||
if (config->workspace_buttons) {
|
||||
for (i = 0; i < output->workspaces->length; ++i) {
|
||||
struct workspace *ws = output->workspaces->items[i];
|
||||
for (size_t i = 0; i < output->workspaces->length; ++i) {
|
||||
struct workspace *ws = *(struct workspace **)list_get(output->workspaces, i);
|
||||
render_workspace_button(window, config, ws, &x);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,11 +62,15 @@ static void parse_json(struct bar *bar, const char *text) {
|
|||
}
|
||||
|
||||
if (bar->status->block_line) {
|
||||
list_foreach(bar->status->block_line, free_status_block);
|
||||
//list_foreach(bar->status->block_line, free_status_block);
|
||||
for (size_t i = 0; i < bar->status->block_line->length; ++i) {
|
||||
struct status_block *item = *(struct status_block **)list_get(bar->status->block_line, i);
|
||||
free_status_block(item);
|
||||
}
|
||||
list_free(bar->status->block_line);
|
||||
}
|
||||
|
||||
bar->status->block_line = create_list();
|
||||
bar->status->block_line = list_new(sizeof(struct status_block *), 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < json_object_array_length(results); ++i) {
|
||||
|
|
@ -199,7 +203,7 @@ static void parse_json(struct bar *bar, const char *text) {
|
|||
new->border_right = 1;
|
||||
}
|
||||
|
||||
list_add(bar->status->block_line, new);
|
||||
list_add(bar->status->block_line, &new);
|
||||
}
|
||||
|
||||
json_object_put(results);
|
||||
|
|
@ -438,7 +442,7 @@ bool handle_status_line(struct bar *bar) {
|
|||
|
||||
struct status_line *init_status_line() {
|
||||
struct status_line *line = malloc(sizeof(struct status_line));
|
||||
line->block_line = create_list();
|
||||
line->block_line = list_new(sizeof(struct status_block *), 0);
|
||||
line->text_line = NULL;
|
||||
line->protocol = UNDEF;
|
||||
|
||||
|
|
@ -447,7 +451,11 @@ struct status_line *init_status_line() {
|
|||
|
||||
void free_status_line(struct status_line *line) {
|
||||
if (line->block_line) {
|
||||
list_foreach(line->block_line, free_status_block);
|
||||
//list_foreach(line->block_line, free_status_block);
|
||||
for (size_t i = 0; i < line->block_line->length; ++i) {
|
||||
struct status_block *item = *(struct status_block **)list_get(line->block_line, i);
|
||||
free_status_block(item);
|
||||
}
|
||||
list_free(line->block_line);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue