From 7233dba9d87d57f8f1f42075c79986d026a74db2 Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Fri, 27 May 2011 19:17:04 +0000 Subject: [PATCH] provide a way to query screen size (just the default screen right now). NOTE: I don't have xcb, so it's untested. It is supposed to work given http://www.x.org/releases/X11R7.5/doc/libxcb/tutorial/#DefaultScreen SVN revision: 59760 --- legacy/ecore/src/lib/ecore_x/Ecore_X.h | 1 + legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c | 20 ++++++++++++++++++++ legacy/ecore/src/lib/ecore_x/xlib/ecore_x.c | 20 ++++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index 245bf56219..206691fa78 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -1069,6 +1069,7 @@ EAPI Ecore_X_Display * ecore_x_display_get(void); EAPI Ecore_X_Connection * ecore_x_connection_get(void); EAPI int ecore_x_fd_get(void); EAPI Ecore_X_Screen * ecore_x_default_screen_get(void); +EAPI void ecore_x_screen_size_get(const Ecore_X_Screen *screen, int *w, int *h); EAPI void ecore_x_double_click_time_set(double t); EAPI double ecore_x_double_click_time_get(void); EAPI void ecore_x_flush(void); diff --git a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c index a0519f87b6..b929273d43 100644 --- a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c +++ b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c @@ -783,6 +783,26 @@ ecore_x_default_screen_get(void) return (Ecore_X_Screen *)_ecore_xcb_screen; } /* ecore_x_default_screen_get */ +/** + * Retrieves the size of an Ecore_X_Screen. + * @param screen the handle to the screen to query. + * @param w where to return the width. May be NULL. Returns 0 on errors. + * @param h where to return the height. May be NULL. Returns 0 on errors. + * @ingroup Ecore_X_Display_Attr_Group + * @see ecore_x_default_screen_get() + */ +EAPI void +ecore_x_screen_size_get(const Ecore_X_Screen *screen, int *w, int *h) +{ + xcb_screen_t *s = (xcb_screen_t *)screen; + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (w) *w = 0; + if (h) *h = 0; + if (!s) return; + if (w) *w = s->width_in_pixels; + if (h) *h = s->height_in_pixels; +} + /** * Sets the timeout for a double and triple clicks to be flagged. * diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x.c index ee4f45772e..637342934b 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x.c @@ -753,6 +753,26 @@ ecore_x_default_screen_get(void) return (Ecore_X_Screen *)DefaultScreenOfDisplay(_ecore_x_disp); } /* ecore_x_default_screen_get */ +/** + * Retrieves the size of an Ecore_X_Screen. + * @param screen the handle to the screen to query. + * @param w where to return the width. May be NULL. Returns 0 on errors. + * @param h where to return the height. May be NULL. Returns 0 on errors. + * @ingroup Ecore_X_Display_Attr_Group + * @see ecore_x_default_screen_get() + */ +EAPI void +ecore_x_screen_size_get(const Ecore_X_Screen *screen, int *w, int *h) +{ + Screen *s = (Screen *)screen; + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (w) *w = 0; + if (h) *h = 0; + if (!s) return; + if (w) *w = s->width; + if (h) *h = s->height; +} + /** * Sets the timeout for a double and triple clicks to be flagged. *