forked from enlightenment/efl
parent
8acf1ebdf2
commit
c736dd323d
|
@ -1,3 +1,8 @@
|
||||||
|
2013-02-08 Carsten Haitzler (The Rasterman)
|
||||||
|
|
||||||
|
* Fix ecore_x ecore_x_screen_is_composited/set() to work
|
||||||
|
properly on multihead.
|
||||||
|
|
||||||
2013-02-07 Christopher Michael (devilhorns)
|
2013-02-07 Christopher Michael (devilhorns)
|
||||||
|
|
||||||
* Added ecore_x_randr_crtc_info_free function.
|
* Added ecore_x_randr_crtc_info_free function.
|
||||||
|
|
1
NEWS
1
NEWS
|
@ -156,3 +156,4 @@ Fixes:
|
||||||
* Prevent denial of service on eina_hash function.
|
* Prevent denial of service on eina_hash function.
|
||||||
* Fix return type of function ecore_wl_outputs_get().
|
* Fix return type of function ecore_wl_outputs_get().
|
||||||
* Fix memleak in Eina_File.
|
* Fix memleak in Eina_File.
|
||||||
|
* Fix ecore_x_screen_is_composited/set() to work on multihead.
|
||||||
|
|
|
@ -585,34 +585,26 @@ ecore_x_screen_is_composited(int screen)
|
||||||
char buff[32];
|
char buff[32];
|
||||||
xcb_get_selection_owner_cookie_t ocookie;
|
xcb_get_selection_owner_cookie_t ocookie;
|
||||||
xcb_get_selection_owner_reply_t *oreply;
|
xcb_get_selection_owner_reply_t *oreply;
|
||||||
|
xcb_intern_atom_cookie_t acookie;
|
||||||
|
xcb_intern_atom_reply_t *areply;
|
||||||
Ecore_X_Window win;
|
Ecore_X_Window win;
|
||||||
static Ecore_X_Atom atom = XCB_NONE;
|
Ecore_X_Atom atom;
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
CHECK_XCB_CONN;
|
CHECK_XCB_CONN;
|
||||||
|
|
||||||
snprintf(buff, sizeof(buff), "_NET_WM_CM_S%i", screen);
|
snprintf(buff, sizeof(buff), "_NET_WM_CM_S%i", screen);
|
||||||
|
acookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 1, strlen(buff), buff);
|
||||||
if (atom == XCB_NONE)
|
areply = xcb_intern_atom_reply(_ecore_xcb_conn, acookie, NULL);
|
||||||
{
|
if (!areply) return EINA_FALSE;
|
||||||
xcb_intern_atom_cookie_t acookie;
|
atom = areply->atom;
|
||||||
xcb_intern_atom_reply_t *areply;
|
free(areply);
|
||||||
|
|
||||||
acookie =
|
|
||||||
xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(buff), buff);
|
|
||||||
areply = xcb_intern_atom_reply(_ecore_xcb_conn, acookie, NULL);
|
|
||||||
if (!areply) return EINA_FALSE;
|
|
||||||
atom = areply->atom;
|
|
||||||
free(areply);
|
|
||||||
}
|
|
||||||
if (atom == XCB_NONE) return EINA_FALSE;
|
if (atom == XCB_NONE) return EINA_FALSE;
|
||||||
|
|
||||||
ocookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, atom);
|
ocookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, atom);
|
||||||
oreply = xcb_get_selection_owner_reply(_ecore_xcb_conn, ocookie, NULL);
|
oreply = xcb_get_selection_owner_reply(_ecore_xcb_conn, ocookie, NULL);
|
||||||
if (!oreply) return EINA_FALSE;
|
if (!oreply) return EINA_FALSE;
|
||||||
win = oreply->owner;
|
win = oreply->owner;
|
||||||
free(oreply);
|
free(oreply);
|
||||||
|
|
||||||
return (win != XCB_NONE) ? EINA_TRUE : EINA_FALSE;
|
return (win != XCB_NONE) ? EINA_TRUE : EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -620,26 +612,20 @@ EAPI void
|
||||||
ecore_x_screen_is_composited_set(int screen,
|
ecore_x_screen_is_composited_set(int screen,
|
||||||
Ecore_X_Window win)
|
Ecore_X_Window win)
|
||||||
{
|
{
|
||||||
static Ecore_X_Atom atom = XCB_NONE;
|
Ecore_X_Atom atom;
|
||||||
|
xcb_intern_atom_cookie_t acookie;
|
||||||
|
xcb_intern_atom_reply_t *areply;
|
||||||
char buff[32];
|
char buff[32];
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
CHECK_XCB_CONN;
|
CHECK_XCB_CONN;
|
||||||
|
|
||||||
snprintf(buff, sizeof(buff), "_NET_WM_CM_S%i", screen);
|
snprintf(buff, sizeof(buff), "_NET_WM_CM_S%i", screen);
|
||||||
if (atom == XCB_NONE)
|
acookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(buff), buff);
|
||||||
{
|
areply = xcb_intern_atom_reply(_ecore_xcb_conn, acookie, NULL);
|
||||||
xcb_intern_atom_cookie_t acookie;
|
if (!areply) return;
|
||||||
xcb_intern_atom_reply_t *areply;
|
atom = areply->atom;
|
||||||
|
free(areply);
|
||||||
acookie =
|
|
||||||
xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(buff), buff);
|
|
||||||
areply = xcb_intern_atom_reply(_ecore_xcb_conn, acookie, NULL);
|
|
||||||
if (!areply) return;
|
|
||||||
atom = areply->atom;
|
|
||||||
free(areply);
|
|
||||||
}
|
|
||||||
if (atom == XCB_NONE) return;
|
|
||||||
xcb_set_selection_owner(_ecore_xcb_conn, win, atom,
|
xcb_set_selection_owner(_ecore_xcb_conn, win, atom,
|
||||||
_ecore_xcb_events_last_time_get());
|
_ecore_xcb_events_last_time_get());
|
||||||
}
|
}
|
||||||
|
|
|
@ -2047,19 +2047,13 @@ EAPI Eina_Bool
|
||||||
ecore_x_screen_is_composited(int screen)
|
ecore_x_screen_is_composited(int screen)
|
||||||
{
|
{
|
||||||
Ecore_X_Window win;
|
Ecore_X_Window win;
|
||||||
static Ecore_X_Atom atom = None;
|
Ecore_X_Atom atom;
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
snprintf(buf, sizeof(buf), "_NET_WM_CM_S%i", screen);
|
atom = XInternAtom(_ecore_x_disp, buf, True);
|
||||||
if (atom == None)
|
if (atom == None) return EINA_FALSE;
|
||||||
atom = XInternAtom(_ecore_x_disp, buf, False);
|
|
||||||
|
|
||||||
if (atom == None)
|
|
||||||
return EINA_FALSE;
|
|
||||||
|
|
||||||
win = XGetSelectionOwner(_ecore_x_disp, atom);
|
win = XGetSelectionOwner(_ecore_x_disp, atom);
|
||||||
|
|
||||||
return (win != None) ? EINA_TRUE : EINA_FALSE;
|
return (win != None) ? EINA_TRUE : EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2067,17 +2061,13 @@ EAPI void
|
||||||
ecore_x_screen_is_composited_set(int screen,
|
ecore_x_screen_is_composited_set(int screen,
|
||||||
Ecore_X_Window win)
|
Ecore_X_Window win)
|
||||||
{
|
{
|
||||||
static Ecore_X_Atom atom = None;
|
Ecore_X_Atom atom;
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
snprintf(buf, sizeof(buf), "_NET_WM_CM_S%i", screen);
|
snprintf(buf, sizeof(buf), "_NET_WM_CM_S%i", screen);
|
||||||
if (atom == None)
|
atom = XInternAtom(_ecore_x_disp, buf, False);
|
||||||
atom = XInternAtom(_ecore_x_disp, buf, False);
|
if (atom == None) return;
|
||||||
|
|
||||||
if (atom == None)
|
|
||||||
return;
|
|
||||||
|
|
||||||
XSetSelectionOwner(_ecore_x_disp, atom, win, _ecore_x_event_last_time);
|
XSetSelectionOwner(_ecore_x_disp, atom, win, _ecore_x_event_last_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue