103 lines
3.2 KiB
C
103 lines
3.2 KiB
C
#include "e_randr_private.h"
|
|
#include "e_randr.h"
|
|
|
|
/**********************************************************************
|
|
*
|
|
* Storage/Restorage of setups
|
|
*
|
|
**********************************************************************
|
|
*/
|
|
|
|
//New helper functions
|
|
|
|
E_Randr_Serialized_Setup_11 *
|
|
_serialized_setup_11_new(void)
|
|
{
|
|
E_Randr_Serialized_Setup_11 *ss;
|
|
Ecore_X_Randr_Screen_Size_MM *size;
|
|
|
|
ss = malloc(sizeof(*ss));
|
|
|
|
if (!(size = (Ecore_X_Randr_Screen_Size_MM *)eina_list_data_get(eina_list_nth(e_randr_screen_info.rrvd_info.randr_info_11->sizes, e_randr_screen_info.rrvd_info.randr_info_11->csize_index)))) goto _serialized_setup_11_new_failed_free_ss;
|
|
ss->size.width = size->width;
|
|
ss->size.height = size->height;
|
|
ss->refresh_rate = e_randr_screen_info.rrvd_info.randr_info_11->current_rate;
|
|
ss->orientation = e_randr_screen_info.rrvd_info.randr_info_11->corientation;
|
|
|
|
return ss;
|
|
|
|
_serialized_setup_11_new_failed_free_ss:
|
|
free(ss);
|
|
return NULL;
|
|
}
|
|
|
|
//Update/value set helper functions
|
|
E_Randr_Serialized_Setup_11 *
|
|
_serialized_setup_11_update(E_Randr_Serialized_Setup_11 *ss_11)
|
|
{
|
|
Ecore_X_Randr_Screen_Size_MM *size;
|
|
|
|
if (ss_11)
|
|
{
|
|
if (!(size = (Ecore_X_Randr_Screen_Size_MM *)eina_list_data_get(eina_list_nth(e_randr_screen_info.rrvd_info.randr_info_11->sizes, e_randr_screen_info.rrvd_info.randr_info_11->csize_index)))) return NULL;
|
|
if (!memcpy(&ss_11->size, size, sizeof(Ecore_X_Randr_Screen_Size_MM)))
|
|
goto _update_serialized_setup_11_failed_free_ss;
|
|
ss_11->refresh_rate = e_randr_screen_info.rrvd_info.randr_info_11->current_rate;
|
|
ss_11->orientation = e_randr_screen_info.rrvd_info.randr_info_11->corientation;
|
|
}
|
|
else
|
|
ss_11 = _serialized_setup_11_new();
|
|
|
|
return ss_11;
|
|
|
|
_update_serialized_setup_11_failed_free_ss:
|
|
free(ss_11);
|
|
return NULL;
|
|
}
|
|
|
|
//Free helper functions
|
|
void
|
|
_e_randr_serialized_setup_11_free(E_Randr_Serialized_Setup_11 *ss11)
|
|
{
|
|
free(ss11);
|
|
}
|
|
|
|
EINTERN void
|
|
e_randr_11_serialized_setup_free(E_Randr_Serialized_Setup_11 *ss_11)
|
|
{
|
|
_e_randr_serialized_setup_11_free(ss_11);
|
|
}
|
|
|
|
Eina_Bool
|
|
_11_try_restore_configuration(void)
|
|
{
|
|
Ecore_X_Randr_Screen_Size_MM *stored_size, *size;
|
|
Eina_List *iter;
|
|
int i = 0;
|
|
|
|
if (!e_config->randr_serialized_setup->serialized_setup_11) return EINA_FALSE;
|
|
stored_size = &e_config->randr_serialized_setup->serialized_setup_11->size;
|
|
EINA_LIST_FOREACH(e_randr_screen_info.rrvd_info.randr_info_11->sizes, iter, size)
|
|
{
|
|
if ((stored_size->width == size->width)
|
|
&& (stored_size->height == size->height)
|
|
&& (stored_size->width_mm == size->width_mm)
|
|
&& (stored_size->height_mm == size->height_mm))
|
|
{
|
|
return ecore_x_randr_screen_primary_output_size_set(e_randr_screen_info.root, i);
|
|
}
|
|
i++;
|
|
}
|
|
|
|
return EINA_FALSE;
|
|
}
|
|
|
|
void
|
|
_11_store_configuration(E_Randr_Configuration_Store_Modifier modifier)
|
|
{
|
|
if (e_config->randr_serialized_setup->serialized_setup_11)
|
|
e_config->randr_serialized_setup->serialized_setup_11 = _serialized_setup_11_update(e_config->randr_serialized_setup->serialized_setup_11);
|
|
else
|
|
e_config->randr_serialized_setup->serialized_setup_11 = _serialized_setup_11_new();
|
|
}
|