forked from enlightenment/efl
Ecore_X: Add some more missing randr functions.
SVN revision: 61398
This commit is contained in:
parent
b1c32bd7a9
commit
a391598c3b
|
@ -1,11 +1,5 @@
|
||||||
/* TODO: List of missing functions
|
/* TODO: List of missing functions
|
||||||
*
|
*
|
||||||
* ecore_x_randr_primary_output_set
|
|
||||||
* ecore_x_randr_current_output_get
|
|
||||||
* ecore_x_randr_current_crtc_get
|
|
||||||
* ecore_x_randr_crtc_pos_get
|
|
||||||
* ecore_x_randr_crtc_size_get
|
|
||||||
* ecore_x_randr_crtc_refresh_rate_get
|
|
||||||
* ecore_x_randr_crtc_orientations_get
|
* ecore_x_randr_crtc_orientations_get
|
||||||
* ecore_x_randr_crtc_orientation_set
|
* ecore_x_randr_crtc_orientation_set
|
||||||
* ecore_x_randr_crtc_clone_set
|
* ecore_x_randr_crtc_clone_set
|
||||||
|
@ -35,7 +29,6 @@
|
||||||
* ecore_x_randr_edid_display_type_digital_get
|
* ecore_x_randr_edid_display_type_digital_get
|
||||||
* ecore_x_randr_edid_display_interface_type_get
|
* ecore_x_randr_edid_display_interface_type_get
|
||||||
* ecore_x_randr_screen_backlight_level_set
|
* ecore_x_randr_screen_backlight_level_set
|
||||||
* ecore_x_randr_primary_output_set
|
|
||||||
* ecore_x_randr_output_subpixel_order_get
|
* ecore_x_randr_output_subpixel_order_get
|
||||||
* ecore_x_randr_output_wired_clones_get
|
* ecore_x_randr_output_wired_clones_get
|
||||||
* ecore_x_randr_output_compatibility_list_get
|
* ecore_x_randr_output_compatibility_list_get
|
||||||
|
@ -628,6 +621,21 @@ ecore_x_randr_primary_output_get(Ecore_X_Window root)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @param root window which's screen should be queried
|
||||||
|
* @param output that should be set as given root window's screen primary output
|
||||||
|
*/
|
||||||
|
EAPI void
|
||||||
|
ecore_x_randr_primary_output_set(Ecore_X_Window root, Ecore_X_Randr_Output output)
|
||||||
|
{
|
||||||
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
|
#ifdef ECORE_XCB_RANDR
|
||||||
|
if ((output) && (_ecore_xcb_randr_root_validate(root)))
|
||||||
|
xcb_randr_set_output_primary(_ecore_xcb_conn, root, output);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Ecore_X_Randr_Mode *
|
EAPI Ecore_X_Randr_Mode *
|
||||||
ecore_x_randr_output_modes_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num, int *npreferred)
|
ecore_x_randr_output_modes_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num, int *npreferred)
|
||||||
{
|
{
|
||||||
|
@ -749,6 +757,12 @@ ecore_x_randr_mode_info_get(Ecore_X_Window root, Ecore_X_Randr_Mode mode)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief get detailed information for all modes related to a root window's screen
|
||||||
|
* @param root window which's screen's ressources are queried
|
||||||
|
* @param num number of modes returned
|
||||||
|
* @return modes' information
|
||||||
|
*/
|
||||||
EAPI Ecore_X_Randr_Mode_Info **
|
EAPI Ecore_X_Randr_Mode_Info **
|
||||||
ecore_x_randr_modes_info_get(Ecore_X_Window root, int *num)
|
ecore_x_randr_modes_info_get(Ecore_X_Window root, int *num)
|
||||||
{
|
{
|
||||||
|
@ -1628,6 +1642,16 @@ ecore_x_randr_move_all_crtcs_but(Ecore_X_Window root, const Ecore_X_Randr_Crtc *
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_x_randr_crtc_pos_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y)
|
||||||
|
{
|
||||||
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
|
#ifdef ECORE_XCB_RANDR
|
||||||
|
ecore_x_randr_crtc_geometry_get(root, crtc, x, y, NULL, NULL);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief sets the position of given CRTC within root window's screen
|
* @brief sets the position of given CRTC within root window's screen
|
||||||
* @param root the window's screen to be queried
|
* @param root the window's screen to be queried
|
||||||
|
@ -1670,6 +1694,58 @@ ecore_x_randr_crtc_pos_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int x,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_x_randr_crtc_size_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *w, int *h)
|
||||||
|
{
|
||||||
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
|
#ifdef ECORE_XCB_RANDR
|
||||||
|
ecore_x_randr_crtc_geometry_get(root, crtc, NULL, NULL, w, h);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Ecore_X_Randr_Refresh_Rate
|
||||||
|
ecore_x_randr_crtc_refresh_rate_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Mode mode)
|
||||||
|
{
|
||||||
|
Ecore_X_Randr_Refresh_Rate ret = 0.0;
|
||||||
|
#ifdef ECORE_XCB_RANDR
|
||||||
|
xcb_randr_get_screen_resources_cookie_t cookie;
|
||||||
|
xcb_randr_get_screen_resources_reply_t *reply;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
|
#ifdef ECORE_XCB_RANDR
|
||||||
|
if (!_ecore_xcb_randr_crtc_validate(root, crtc)) return 0.0;
|
||||||
|
cookie = xcb_randr_get_screen_resources_unchecked(_ecore_xcb_conn, root);
|
||||||
|
reply = xcb_randr_get_screen_resources_reply(_ecore_xcb_conn, cookie, NULL);
|
||||||
|
if (reply)
|
||||||
|
{
|
||||||
|
xcb_randr_mode_info_iterator_t miter;
|
||||||
|
|
||||||
|
miter = xcb_randr_get_screen_resources_modes_iterator(reply);
|
||||||
|
while (miter.rem)
|
||||||
|
{
|
||||||
|
xcb_randr_mode_info_t *minfo;
|
||||||
|
|
||||||
|
minfo = miter.data;
|
||||||
|
if (minfo->id == mode)
|
||||||
|
{
|
||||||
|
if ((minfo->htotal) && (minfo->vtotal))
|
||||||
|
{
|
||||||
|
ret = ((double)minfo->dot_clock /
|
||||||
|
((double)minfo->htotal * (double)minfo->vtotal));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
xcb_randr_mode_info_next(&miter);
|
||||||
|
}
|
||||||
|
free(reply);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief move given CRTCs belonging to the given root window's screen dx/dy pixels relative to their current position. The screen size will be automatically adjusted if necessary and possible.
|
* @brief move given CRTCs belonging to the given root window's screen dx/dy pixels relative to their current position. The screen size will be automatically adjusted if necessary and possible.
|
||||||
* @param root window which's screen's resources are used
|
* @param root window which's screen's resources are used
|
||||||
|
@ -1722,12 +1798,10 @@ ecore_x_randr_move_crtcs(Ecore_X_Window root, const Ecore_X_Randr_Crtc *crtcs, i
|
||||||
((oreply[i]->x + oreply[i]->width + dx) > mw) ||
|
((oreply[i]->x + oreply[i]->width + dx) > mw) ||
|
||||||
((oreply[i]->y + oreply[i]->height + dy) > mh))
|
((oreply[i]->y + oreply[i]->height + dy) > mh))
|
||||||
{
|
{
|
||||||
// free(oreply[i]);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
nw = MAX((int)(oreply[i]->x + oreply[i]->width + dx), nw);
|
nw = MAX((int)(oreply[i]->x + oreply[i]->width + dx), nw);
|
||||||
nh = MAX((int)(oreply[i]->y + oreply[i]->height + dy), nh);
|
nh = MAX((int)(oreply[i]->y + oreply[i]->height + dy), nh);
|
||||||
// free(oreply);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(reply);
|
free(reply);
|
||||||
|
|
Loading…
Reference in New Issue