forked from enlightenment/enlightenment
e: e_alert now find the composite window by looking at X property insteed of relying on E.
SVN revision: 78692
This commit is contained in:
parent
7bef20f1b8
commit
7826261e19
|
@ -282,7 +282,7 @@ extern EAPI Eina_Bool restart;
|
||||||
extern EAPI Eina_Bool e_precache_end;
|
extern EAPI Eina_Bool e_precache_end;
|
||||||
extern EAPI Eina_Bool x_fatal;
|
extern EAPI Eina_Bool x_fatal;
|
||||||
|
|
||||||
extern EAPI unsigned long e_alert_composite_win;
|
EAPI void e_alert_composite_win(Ecore_X_Window root, Ecore_X_Window win);
|
||||||
|
|
||||||
//#define SMARTERR(args...) abort()
|
//#define SMARTERR(args...) abort()
|
||||||
#define SMARTERRNR() return
|
#define SMARTERRNR() return
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
|
||||||
/* public variables */
|
/* public variables */
|
||||||
EAPI unsigned long e_alert_composite_win = 0;
|
EAPI unsigned long _e_alert_composite_win = 0;
|
||||||
|
|
||||||
EINTERN int
|
EINTERN int
|
||||||
e_alert_init(void)
|
e_alert_init(void)
|
||||||
|
@ -16,6 +16,19 @@ e_alert_shutdown(void)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_alert_composite_win(Ecore_X_Window root, Ecore_X_Window comp)
|
||||||
|
{
|
||||||
|
Ecore_X_Atom composite_win;
|
||||||
|
|
||||||
|
composite_win = ecore_x_atom_get("_E_COMP_WINDOW");
|
||||||
|
|
||||||
|
if (comp == 0)
|
||||||
|
ecore_x_window_prop_property_del(root, composite_win);
|
||||||
|
else
|
||||||
|
ecore_x_window_prop_card32_set(root, composite_win, &comp, 1);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
e_alert_show(int sig)
|
e_alert_show(int sig)
|
||||||
{
|
{
|
||||||
|
@ -34,8 +47,7 @@ e_alert_show(int sig)
|
||||||
args[2] = alloca(21);
|
args[2] = alloca(21);
|
||||||
snprintf(args[2], 21, "%lu", (long unsigned int)getpid());
|
snprintf(args[2], 21, "%lu", (long unsigned int)getpid());
|
||||||
|
|
||||||
args[3] = alloca(21);
|
args[3] = NULL;
|
||||||
snprintf(args[3], 21, "%lu", e_alert_composite_win);
|
|
||||||
|
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid < -1)
|
if (pid < -1)
|
||||||
|
|
|
@ -72,8 +72,6 @@ main(int argc, char **argv)
|
||||||
sig = atoi(argv[i]); // signal
|
sig = atoi(argv[i]); // signal
|
||||||
else if (i == 2)
|
else if (i == 2)
|
||||||
pid = atoi(argv[i]); // E's pid
|
pid = atoi(argv[i]); // E's pid
|
||||||
else if (i == 3)
|
|
||||||
comp_win = atoi(argv[i]); // Composite Alert Window
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = getenv("E17_TAINTED");
|
tmp = getenv("E17_TAINTED");
|
||||||
|
@ -181,6 +179,45 @@ _e_alert_create(void)
|
||||||
xcb_create_gc(conn, gc, win, mask, mask_list);
|
xcb_create_gc(conn, gc, win, mask, mask_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_alert_atom_get(const char *name)
|
||||||
|
{
|
||||||
|
xcb_intern_atom_cookie_t cookie;
|
||||||
|
xcb_intern_atom_reply_t *reply;
|
||||||
|
int a;
|
||||||
|
|
||||||
|
cookie = xcb_intern_atom_unchecked(conn, 0, strlen(name), name);
|
||||||
|
reply = xcb_intern_atom_reply(conn, cookie, NULL);
|
||||||
|
if (!reply) return XCB_ATOM_NONE;
|
||||||
|
a = reply->atom;
|
||||||
|
free(reply);
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_alert_comp_win_get(void)
|
||||||
|
{
|
||||||
|
xcb_get_property_cookie_t cookie;
|
||||||
|
xcb_get_property_reply_t *reply;
|
||||||
|
uint32_t *v;
|
||||||
|
int r;
|
||||||
|
int atom_cardinal, atom_composite_win;
|
||||||
|
|
||||||
|
atom_cardinal = _e_alert_atom_get("CARDINAL");
|
||||||
|
atom_composite_win = _e_alert_atom_get("_E_COMP_WINDOW");
|
||||||
|
|
||||||
|
cookie = xcb_get_property_unchecked(conn, 0, screen->root, atom_composite_win,
|
||||||
|
atom_cardinal, 0, 0x7fffffff);
|
||||||
|
reply = xcb_get_property_reply(conn, cookie, NULL);
|
||||||
|
if (!reply) return -1;
|
||||||
|
|
||||||
|
v = xcb_get_property_value(reply);
|
||||||
|
r = v[0];
|
||||||
|
|
||||||
|
free(reply);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_alert_display(void)
|
_e_alert_display(void)
|
||||||
{
|
{
|
||||||
|
@ -213,6 +250,7 @@ _e_alert_display(void)
|
||||||
_e_alert_button_move_resize(btn2, x, WINDOW_HEIGHT - 20 - (fh + 20),
|
_e_alert_button_move_resize(btn2, x, WINDOW_HEIGHT - 20 - (fh + 20),
|
||||||
w, (fh + 20));
|
w, (fh + 20));
|
||||||
|
|
||||||
|
comp_win = _e_alert_comp_win_get();
|
||||||
if (comp_win)
|
if (comp_win)
|
||||||
{
|
{
|
||||||
xcb_rectangle_t rect;
|
xcb_rectangle_t rect;
|
||||||
|
|
|
@ -3685,7 +3685,7 @@ _e_mod_comp_add(E_Manager *man)
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->man->num == 0) e_alert_composite_win = c->win;
|
if (c->man->num == 0) e_alert_composite_win(c->man->root, c->win);
|
||||||
|
|
||||||
if (_comp_mod->conf->engine == ENGINE_GL)
|
if (_comp_mod->conf->engine == ENGINE_GL)
|
||||||
{
|
{
|
||||||
|
@ -3891,7 +3891,7 @@ _e_mod_comp_del(E_Comp *c)
|
||||||
ecore_x_composite_unredirect_subwindows
|
ecore_x_composite_unredirect_subwindows
|
||||||
(c->man->root, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
(c->man->root, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
||||||
ecore_x_composite_render_window_disable(c->win);
|
ecore_x_composite_render_window_disable(c->win);
|
||||||
if (c->man->num == 0) e_alert_composite_win = 0;
|
if (c->man->num == 0) e_alert_composite_win(c->man->root, 0);
|
||||||
if (c->render_animator) ecore_animator_del(c->render_animator);
|
if (c->render_animator) ecore_animator_del(c->render_animator);
|
||||||
if (c->new_up_timer) ecore_timer_del(c->new_up_timer);
|
if (c->new_up_timer) ecore_timer_del(c->new_up_timer);
|
||||||
if (c->update_job) ecore_job_del(c->update_job);
|
if (c->update_job) ecore_job_del(c->update_job);
|
||||||
|
|
Loading…
Reference in New Issue