E: Re-enable Alert window when composite module is running.
SVN revision: 62182
This commit is contained in:
parent
29dffc306c
commit
750dbdf926
|
@ -467,6 +467,7 @@ PKG_CHECK_MODULES(E_INIT, [
|
||||||
|
|
||||||
PKG_CHECK_MODULES(E_ALERT, [
|
PKG_CHECK_MODULES(E_ALERT, [
|
||||||
xcb
|
xcb
|
||||||
|
xcb-shape
|
||||||
eina >= 1.0.999
|
eina >= 1.0.999
|
||||||
ecore >= 1.0.999
|
ecore >= 1.0.999
|
||||||
ecore-ipc >= 1.0.999
|
ecore-ipc >= 1.0.999
|
||||||
|
|
|
@ -239,6 +239,6 @@ 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;
|
extern EAPI unsigned long e_alert_composite_win;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7,6 +7,9 @@ static Eina_Bool _e_alert_cb_exe_del(void *data __UNUSED__, int type __UNUSED__,
|
||||||
static Ecore_Exe *alert_exe = NULL;
|
static Ecore_Exe *alert_exe = NULL;
|
||||||
static Ecore_Event_Handler *alert_exe_hdl = NULL;
|
static Ecore_Event_Handler *alert_exe_hdl = NULL;
|
||||||
|
|
||||||
|
/* public variables */
|
||||||
|
EAPI unsigned long e_alert_composite_win = 0;
|
||||||
|
|
||||||
EINTERN int
|
EINTERN int
|
||||||
e_alert_init(void)
|
e_alert_init(void)
|
||||||
{
|
{
|
||||||
|
@ -33,8 +36,8 @@ e_alert_show(int sig)
|
||||||
char buf[8192];
|
char buf[8192];
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf),
|
snprintf(buf, sizeof(buf),
|
||||||
"%s/enlightenment/utils/enlightenment_alert %d %d",
|
"%s/enlightenment/utils/enlightenment_alert %d %d %d",
|
||||||
e_prefix_lib_get(), sig, getpid());
|
e_prefix_lib_get(), sig, getpid(), e_alert_composite_win);
|
||||||
|
|
||||||
alert_exe = ecore_exe_run(buf, NULL);
|
alert_exe = ecore_exe_run(buf, NULL);
|
||||||
pause();
|
pause();
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <Ecore.h>
|
#include <Ecore.h>
|
||||||
#include <Ecore_Ipc.h>
|
#include <Ecore_Ipc.h>
|
||||||
#include <xcb/xcb.h>
|
#include <xcb/xcb.h>
|
||||||
|
#include <xcb/shape.h>
|
||||||
|
|
||||||
#define WINDOW_WIDTH 320
|
#define WINDOW_WIDTH 320
|
||||||
#define WINDOW_HEIGHT 240
|
#define WINDOW_HEIGHT 240
|
||||||
|
@ -43,7 +44,7 @@ static Ecore_Ipc_Server *_ipc_server = NULL;
|
||||||
static Ecore_Ipc_Server *_server = NULL;
|
static Ecore_Ipc_Server *_server = NULL;
|
||||||
static xcb_connection_t *conn = NULL;
|
static xcb_connection_t *conn = NULL;
|
||||||
static xcb_screen_t *screen = NULL;
|
static xcb_screen_t *screen = NULL;
|
||||||
static xcb_window_t win = 0;
|
static xcb_window_t win = 0, comp_win = 0;
|
||||||
static xcb_window_t btn1 = 0;
|
static xcb_window_t btn1 = 0;
|
||||||
static xcb_window_t btn2 = 0;
|
static xcb_window_t btn2 = 0;
|
||||||
static xcb_font_t font = 0;
|
static xcb_font_t font = 0;
|
||||||
|
@ -73,6 +74,8 @@ 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
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ecore_init()) return EXIT_FAILURE;
|
if (!ecore_init()) return EXIT_FAILURE;
|
||||||
|
@ -253,21 +256,25 @@ _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));
|
||||||
|
|
||||||
/* FIXME: May need e_alert_composite_win here and checks for shapedinput */
|
if (comp_win)
|
||||||
/* if (e_alert_composite_win) */
|
{
|
||||||
/* { */
|
xcb_rectangle_t rect;
|
||||||
/* #ifdef ShapeInput */
|
int wx = 0, wy = 0;
|
||||||
/* XRectangle rect; */
|
|
||||||
|
|
||||||
/* rect.x = wx; */
|
wx = ((sw - WINDOW_WIDTH) / 2);
|
||||||
/* rect.y = wy; */
|
wy = ((sh - WINDOW_HEIGHT) / 2);
|
||||||
/* rect.width = ww; */
|
|
||||||
/* rect.height = hh; */
|
rect.x = wx;
|
||||||
/* XShapeCombineRectangles(dd, e_alert_composite_win, ShapeInput, */
|
rect.y = wy;
|
||||||
/* 0, 0, &rect, 1, ShapeSet, Unsorted); */
|
rect.width = WINDOW_WIDTH;
|
||||||
/* #endif */
|
rect.height = WINDOW_HEIGHT;
|
||||||
/* XReparentWindow(dd, win, e_alert_composite_win, wx, wy); */
|
|
||||||
/* } */
|
xcb_shape_rectangles(conn, XCB_SHAPE_SO_SET,
|
||||||
|
XCB_SHAPE_SK_INPUT, XCB_CLIP_ORDERING_UNSORTED,
|
||||||
|
comp_win, 0, 0, 1, &rect);
|
||||||
|
|
||||||
|
xcb_reparent_window(conn, win, comp_win, wx, wy);
|
||||||
|
}
|
||||||
|
|
||||||
/* map and raise main window */
|
/* map and raise main window */
|
||||||
xcb_map_window(conn, win);
|
xcb_map_window(conn, win);
|
||||||
|
@ -332,6 +339,7 @@ _e_alert_shutdown(void)
|
||||||
xcb_destroy_window(conn, btn1);
|
xcb_destroy_window(conn, btn1);
|
||||||
xcb_destroy_window(conn, btn2);
|
xcb_destroy_window(conn, btn2);
|
||||||
xcb_destroy_window(conn, win);
|
xcb_destroy_window(conn, win);
|
||||||
|
if (comp_win) xcb_destroy_window(conn, comp_win);
|
||||||
xcb_free_gc(conn, gc);
|
xcb_free_gc(conn, gc);
|
||||||
xcb_disconnect(conn);
|
xcb_disconnect(conn);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3140,7 +3140,7 @@ _e_mod_comp_add(E_Manager *man)
|
||||||
}
|
}
|
||||||
ecore_x_screen_is_composited_set(c->man->num, c->cm_selection);
|
ecore_x_screen_is_composited_set(c->man->num, c->cm_selection);
|
||||||
|
|
||||||
// if (c->man->num == 0) e_alert_composite_win = c->win;
|
if (c->man->num == 0) e_alert_composite_win = c->win;
|
||||||
|
|
||||||
if (_comp_mod->conf->engine == E_EVAS_ENGINE_GL_X11)
|
if (_comp_mod->conf->engine == E_EVAS_ENGINE_GL_X11)
|
||||||
{
|
{
|
||||||
|
@ -3310,7 +3310,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 = 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