static void
_e_comp_wl_client_priority_adjust(int pid, int set, int adj, Eina_Bool use_adj, Eina_Bool adj_child, Eina_Bool do_child)
{
+ Eina_List *files;
+ char *file, buff[PATH_MAX];
+ FILE *f;
+ int pid2, ppid;
+ int num_read;
int n;
- n = set;
- if (use_adj) n = (getpriority(PRIO_PROCESS, pid) + adj);
+ if (use_adj)
+ n = (getpriority(PRIO_PROCESS, pid) + adj);
+ else
+ n = set;
setpriority(PRIO_PROCESS, pid, n);
- if (do_child)
- {
- Eina_List *files;
- char *file, buff[PATH_MAX];
- FILE *f;
- int pid2, ppid;
+ if (adj_child)
+ use_adj = EINA_TRUE;
- files = ecore_file_ls("/proc");
- EINA_LIST_FREE(files, file)
- {
- if (isdigit(file[0]))
- {
- snprintf(buff, sizeof(buff), "/proc/%s/stat", file);
- if ((f = fopen(buff, "r")))
- {
- pid2 = -1;
- ppid = -1;
- if (fscanf(f, "%i %*s %*s %i %*s", &pid2, &ppid) == 2)
- {
- fclose(f);
- if (ppid == pid)
- {
- if (adj_child)
- _e_comp_wl_client_priority_adjust(pid2, set,
- adj, EINA_TRUE,
- adj_child, do_child);
- else
- _e_comp_wl_client_priority_adjust(pid2, set,
- adj, use_adj,
- adj_child, do_child);
- }
- }
- else
- fclose(f);
- }
- }
- free(file);
- }
- }
+ if (!do_child)
+ return;
+
+ files = ecore_file_ls("/proc");
+ EINA_LIST_FREE(files, file)
+ {
+ if (!isdigit(file[0]))
+ continue;
+
+ snprintf(buff, sizeof(buff), "/proc/%s/stat", file);
+ if ((f = fopen(buff, "r")))
+ {
+ pid2 = -1;
+ ppid = -1;
+ num_read = fscanf(f, "%i %*s %*s %i %*s", &pid2, &ppid);
+ fclose(f);
+ if (num_read == 2 && ppid == pid)
+ _e_comp_wl_client_priority_adjust(pid2, set,
+ adj, use_adj,
+ adj_child, do_child);
+ }
+
+ free(file);
+ }
}
static void
E_Client *ec;
if (!(ec = data)) return;
+ if (!(ec->comp_data->shell.ping)) return;
+ if (!(ec->comp_data->shell.surface)) return;
- if (ec->comp_data->shell.ping)
- {
- if (ec->comp_data->shell.surface)
- ec->comp_data->shell.ping(ec->comp_data->shell.surface);
- }
+ ec->comp_data->shell.ping(ec->comp_data->shell.surface);
}
static void
}
static void
+_e_xdg_surface_state_add(struct wl_resource *resource, struct wl_array *states, uint32_t state)
+{
+ uint32_t *s;
+ s = wl_array_add(states, sizeof(*s));
+ if (s)
+ *s = state;
+ else
+ wl_resource_post_no_memory(resource);
+
+ return;
+}
+
+static void
_e_xdg_shell_surface_configure_send(struct wl_resource *resource, uint32_t edges, int32_t width, int32_t height)
{
E_Client *ec;
wl_array_init(&states);
if (ec->fullscreen)
- {
- s = wl_array_add(&states, sizeof(*s));
- *s = XDG_SURFACE_STATE_FULLSCREEN;
- }
+ _e_xdg_surface_state_add(resource, &states, XDG_SURFACE_STATE_FULLSCREEN);
else if (ec->maximized)
- {
- s = wl_array_add(&states, sizeof(*s));
- *s = XDG_SURFACE_STATE_MAXIMIZED;
- }
-
+ _e_xdg_surface_state_add(resource, &states, XDG_SURFACE_STATE_MAXIMIZED);
if (edges != 0)
- {
- s = wl_array_add(&states, sizeof(*s));
- *s = XDG_SURFACE_STATE_RESIZING;
- }
-
+ _e_xdg_surface_state_add(resource, &states, XDG_SURFACE_STATE_RESIZING);
if (ec->focused)
- {
- s = wl_array_add(&states, sizeof(*s));
- *s = XDG_SURFACE_STATE_ACTIVATED;
- }
+ _e_xdg_surface_state_add(resource, &states, XDG_SURFACE_STATE_ACTIVATED);
serial = wl_display_next_serial(ec->comp->wl_comp_data->wl.disp);
if (ec->netwm.type != E_WINDOW_TYPE_POPUP_MENU)
return;
}
- res = wl_resource_create(client, &wl_shell_interface, MIN(version, 1), id);
- if (!res)
+ if (!(res = wl_resource_create(client, &wl_shell_interface, MIN(version, 1), id)))
{
wl_client_post_no_memory(client);
return;
return;
}
- res = wl_resource_create(client, &xdg_shell_interface, MIN(version, 1), id);
- if (!res)
+ if (!(res = wl_resource_create(client, &xdg_shell_interface, MIN(version, 1), id)))
{
wl_client_post_no_memory(client);
return;