Tizen 2.1 release
[platform/core/uifw/e17.git] / src / modules / comp / e_mod_main.c
1 #include "e.h"
2 #include "e_mod_main.h"
3 #include "e_mod_config.h"
4 #include "e_mod_comp.h"
5
6 //static Ecore_Event_Handler *init_done_handler = NULL;
7
8 //static int
9 //_e_init_done(void *data, int type, void *event)
10 //{
11 //   ecore_event_handler_del(init_done_handler);
12 //   init_done_handler = NULL;
13 //   if (!e_mod_comp_init())
14 //     {
15 //        // FIXME: handle if comp init fails
16 //     }
17 //   return 1;
18 //}
19
20 /* module private routines */
21 Mod *_comp_mod = NULL;
22
23 /* public module routines. all modules must have these */
24 EAPI E_Module_Api e_modapi =
25 {
26    E_MODULE_API_VERSION,
27    "Composite"
28 };
29
30 EAPI void *
31 e_modapi_init(E_Module *m)
32 {
33    Mod *mod;
34    char buf[4096];
35
36    mod = calloc(1, sizeof(Mod));
37    m->data = mod;
38
39    mod->module = m;
40    snprintf(buf, sizeof(buf), "%s/e-module-comp.edj", e_module_dir_get(m));
41    e_configure_registry_category_add("appearance", 10, _("Look"), NULL,
42                                      "preferences-look");
43    e_configure_registry_item_add("appearance/comp", 120, _("Composite"), NULL,
44                                  buf, e_int_config_comp_module);
45
46    e_mod_comp_cfdata_edd_init(&(mod->conf_edd),
47                               &(mod->conf_match_edd));
48
49    mod->conf = e_config_domain_load("module.comp", mod->conf_edd);
50    if (!mod->conf) _e_mod_config_new(m);
51
52    if (!e_config->use_composite)
53      {
54         e_config->use_composite = 1;
55         e_config_save_queue();
56      }
57
58    /* XXX: disabled dropshadow module when comp is running */
59    {
60       Eina_List *l;
61       E_Module *m2;
62       EINA_LIST_FOREACH(e_module_list(), l, m2)
63         {
64            if (m2->enabled && (!strcmp(m2->name, "dropshadow")))
65              {
66                 e_util_dialog_internal(_("Composite"),
67                                        _("Dropshadow module is incompatible<br>"
68                                          "with compositing. Disabling the<br>"
69                                          "Dropshadow module."));
70                 e_module_disable(m2);
71              }
72         }
73    }
74
75    /* XXX: update old configs. add config versioning */
76    if (mod->conf->first_draw_delay == 0)
77      mod->conf->first_draw_delay = 0.20;
78
79    _comp_mod = mod;
80
81    if (!e_mod_comp_init())
82      {
83         // FIXME: handle if comp init fails
84      }
85
86    e_module_delayed_set(m, 0);
87    e_module_priority_set(m, -1000);
88    return mod;
89 }
90
91 void
92 _e_mod_config_new(E_Module *m)
93 {
94    Mod *mod = m->data;
95
96    mod->conf = e_mod_comp_cfdata_config_new();
97 }
98
99 void
100 _e_mod_config_free(E_Module *m)
101 {
102    Mod *mod = m->data;
103
104    e_mod_cfdata_config_free(mod->conf);
105    mod->conf = NULL;
106 }
107
108 EAPI int
109 e_modapi_shutdown(E_Module *m)
110 {
111    Mod *mod = m->data;
112
113    e_mod_comp_shutdown();
114
115    e_configure_registry_item_del("appearance/comp");
116    e_configure_registry_category_del("appearance");
117
118    if (mod->config_dialog)
119      {
120         e_object_del(E_OBJECT(mod->config_dialog));
121         mod->config_dialog = NULL;
122      }
123    _e_mod_config_free(m);
124
125    E_CONFIG_DD_FREE(mod->conf_match_edd);
126    E_CONFIG_DD_FREE(mod->conf_edd);
127    free(mod);
128
129    if (mod == _comp_mod) _comp_mod = NULL;
130
131    return 1;
132 }
133
134 EAPI int
135 e_modapi_save(E_Module *m)
136 {
137    Mod *mod = m->data;
138    e_config_domain_save("module.comp", mod->conf_edd, mod->conf);
139    return 1;
140 }
141