typedef struct _E_Randr_Crtc_Info E_Randr_Crtc_Info;
typedef struct _E_Randr_Edid_Hash E_Randr_Edid_Hash;
+typedef struct _E_Randr_Monitor_Info E_Randr_Monitor_Info;
typedef struct _E_Randr_Output_Info E_Randr_Output_Info;
typedef struct _E_Randr_Screen_Info_11 E_Randr_Screen_Info_11;
typedef struct _E_Randr_Screen_Info_12 E_Randr_Screen_Info_12;
typedef struct _E_Randr_Serialized_Setup_12 E_Randr_Serialized_Setup_12;
typedef struct _E_Randr_Serialized_Setup E_Randr_Serialized_Setup;
-EAPI void e_randr_store_configuration(E_Randr_Screen_Info *screen_info);
+typedef enum _E_Randr_Configuration_Store_Modifier
+{
+ E_RANDR_CONFIGURATION_STORE_POLICIES = (1 << 0),
+ E_RANDR_CONFIGURATION_STORE_RESOLUTIONS = (1 << 1),
+ E_RANDR_CONFIGURATION_STORE_ARRANGEMENT = (1 << 2),
+ E_RANDR_CONFIGURATION_STORE_ORIENTATIONS = (1 << 3),
+ E_RANDR_CONFIGURATION_STORE_ALL = (
+ E_RANDR_CONFIGURATION_STORE_POLICIES
+ | E_RANDR_CONFIGURATION_STORE_RESOLUTIONS
+ | E_RANDR_CONFIGURATION_STORE_ARRANGEMENT
+ | E_RANDR_CONFIGURATION_STORE_ORIENTATIONS)
+} E_Randr_Configuration_Store_Modifier;
+
+EAPI void e_randr_store_configuration(E_Randr_Configuration_Store_Modifier modifier);
#else
#ifndef E_RANDR_H
int hash;
};
+struct _E_Randr_Monitor_Info
+{
+ Eina_List *modes;
+ Eina_List *preferred_modes;
+ Ecore_X_Randr_Screen_Size size_mm;
+ unsigned char *edid;
+ unsigned long edid_length;
+ E_Randr_Edid_Hash edid_hash;
+ int max_backlight;
+ double backlight_level;
+};
+
struct _E_Randr_Output_Info
{
Ecore_X_ID xid;
Ecore_X_Randr_Connector_Type connector_type;
Ecore_X_Randr_Connection_Status connection_status;
Ecore_X_Randr_Output_Policy policy;
+ Eina_List *possible_crtcs;
+ Eina_List *compatibility_list;
+ Ecore_X_Render_Subpixel_Order subpixel_order;
/*
* Attached Monitor specific:
*/
- Eina_List *modes;
- Eina_List *preferred_modes;
- Eina_List *clones;
- Eina_List *possible_crtcs;
- Ecore_X_Randr_Screen_Size size_mm;
- unsigned char *edid;
- unsigned long edid_length;
- E_Randr_Edid_Hash edid_hash;
- int max_backlight;
- double backlight_level;
- Ecore_X_Render_Subpixel_Order subpixel_order;
- Eina_List *compatible_outputs;
+ E_Randr_Monitor_Info *monitor;
};
struct _E_Randr_Screen_Info_11
struct _E_Randr_Serialized_Output_Policy
{
char *name;
- int name_length;
Ecore_X_Randr_Output_Policy policy;
};
struct _E_Randr_Serialized_Output
{
char *name;
- int name_length;
- E_Randr_Edid_Hash edid_hash;
double backlight_level;
};
struct _E_Randr_Serialized_Crtc
{
+ int index;
//List of E_Randr_Serialized_Output objects that were used on the same output
- Eina_List *serialized_outputs;
- //the serialized mode_info misses its xid value
- Ecore_X_Randr_Mode_Info mode_info;
+ Eina_List *outputs;
Evas_Coord_Point pos;
- //List of all possible outputs' names
- //e.g. "LVDS", "CRT-0", "VGA"
- Eina_List *possible_outputs_names;
Ecore_X_Randr_Orientation orientation;
+ //the serialized mode_info
+ Ecore_X_Randr_Mode_Info *mode_info;
};
struct _E_Randr_Serialized_Setup_12
{
double timestamp;
//List of E_Randr_Serialized_Crtc objects
- Eina_List *serialized_crtcs;
+ Eina_List *crtcs;
/*
- * List of E_Randr_Edid_Hash elements of monitors,
- * that were enabled, when the setup was stored
+ * List of E_Randr_Edid_Hash elements of all connected monitors
*/
- Eina_List *serialized_edid_hashes;
+ Eina_List *edid_hashes;
};
struct _E_Randr_Serialized_Setup_11
//List of E_Randr_Serialized_Setup_12 objects
Eina_List *serialized_setups_12;
//List of E_Randr_Serialized_Output_Policy objects
- Eina_List *serialized_outputs_policies;
+ Eina_List *outputs_policies;
};
EINTERN Eina_Bool e_randr_init(void);
+EAPI Eina_Bool e_randr_screen_info_refresh(void);
EINTERN int e_randr_shutdown(void);
+EINTERN void e_randr_serialized_setup_free(E_Randr_Serialized_Setup *ss);
+EINTERN void e_randr_11_serialized_setup_free(E_Randr_Serialized_Setup_11 *ss_11);
+EINTERN void e_randr_12_serialized_setup_free(E_Randr_Serialized_Setup_12 *ss_12);
+EINTERN void e_randr_12_serialized_output_policy_free(E_Randr_Serialized_Output_Policy *policy);
-EAPI extern E_Randr_Screen_Info *e_randr_screen_info;
+EAPI extern E_Randr_Screen_Info e_randr_screen_info;
#endif
#endif