Enlightenment CVS committal

Author  : devilhorns
Project : e_modules
Module  : mixer

Dir     : e_modules/mixer


Modified Files:
        e_mod_main.c 


Log Message:
Test method for window closing. Needs current evas.

===================================================================
RCS file: /cvs/e/e_modules/mixer/e_mod_main.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_mod_main.c        7 Sep 2006 22:07:14 -0000       1.6
+++ e_mod_main.c        8 Sep 2006 18:03:10 -0000       1.7
@@ -70,11 +70,12 @@
 static void         _mixer_menu_cb_configure (void *data, E_Menu *m, 
                                              E_Menu_Item *mi);
 
-static void _mixer_window_simple_pop_up      (Instance *inst);
-static int _mixer_window_simple_animator_cb  (void *data);
-static void _mixer_window_simple_mouse_up_cb (void *data, Evas *e, Evas_Object 
*obj, void *event_info);
-static void _mixer_window_simple_changed_cb  (void *data, Evas_Object *obj, 
void *event_info);
-static void _mixer_window_simple_resize_cb   (E_Win *win);
+static void _mixer_window_simple_pop_up       (Instance *inst);
+static int  _mixer_window_simple_animator_cb  (void *data);
+static void _mixer_window_simple_mouse_up_cb  (void *data, Evas *e, 
Evas_Object *obj, void *event_info);
+static void _mixer_window_simple_mouse_out_cb (void *data, Evas *e, 
Evas_Object *obj, void *event_info);
+static void _mixer_window_simple_changed_cb   (void *data, Evas_Object *obj, 
void *event_info);
+static void _mixer_window_simple_resize_cb    (E_Win *win);
 
 /* Private vars */
 static E_Config_DD *conf_edd = NULL;
@@ -193,7 +194,7 @@
    Evas_Object *o;
    char         buf[4096];
 
-   snprintf (buf, sizeof(buf), "%s/module.eap",
+   snprintf(buf, sizeof(buf), "%s/module.eap",
             e_module_dir_get(mixer_config->module));
 
    o = edje_object_add(evas);
@@ -432,7 +433,16 @@
         evas_object_show(win->event_obj);
         evas_object_event_callback_add(win->event_obj, EVAS_CALLBACK_MOUSE_UP,
                                        _mixer_window_simple_mouse_up_cb, win);
-        
+
+       #ifdef DEBUG
+       /* Testing possible method for window destroy. It does work 
+        * with an updated evas, as evas had some null check bugs
+        * (or lack of) which I fixed. Is this the behavior we're 
+        * looking for ? */
+        evas_object_event_callback_add(win->event_obj, EVAS_CALLBACK_MOUSE_OUT,
+                                       _mixer_window_simple_mouse_out_cb, win);
+        #endif
+       
         win->bg_obj = edje_object_add(e_win_evas_get(win->window));
         e_theme_edje_object_set(win->bg_obj, "base/theme/menus",
                                "e/widgets/menu/default/background");
@@ -511,7 +521,8 @@
 }
 
 /* Makes the simple window slide */
-static int _mixer_window_simple_animator_cb(void *data)
+static int 
+_mixer_window_simple_animator_cb(void *data)
 {
    Mixer_Win_Simple *win;
    double percent;
@@ -532,6 +543,7 @@
    
    if (h >= win->h)
      {
+       ecore_animator_del(win->slide_animator);
         win->slide_animator = NULL;
         return 0;
      }
@@ -540,18 +552,62 @@
 }
 
 /* Called when the background object of the simple window is released */
-static void _mixer_window_simple_mouse_up_cb(void *data, Evas *e, Evas_Object 
*obj, void *event_info)
+static void 
+_mixer_window_simple_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
 {
    Mixer_Win_Simple *win;
    
-   if (!(win = data))
-     return;
+   if (!(win = data)) return;
    
    printf("Mouse up\n");
 }
 
+static void 
+_mixer_window_simple_mouse_out_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info) 
+{
+   Mixer_Win_Simple *win;
+   Mixer *mixer;
+   
+   if (!(win = data)) return;
+
+   if (win->slide_animator) 
+     { 
+       ecore_animator_del(win->slide_animator);
+       win->slide_animator = NULL;
+     }
+   
+   if (win->slider) 
+     {
+        evas_object_smart_callback_del(win->slider, "changed",
+                                       _mixer_window_simple_changed_cb);
+       evas_object_del(win->slider);
+     }
+   
+   if (win->bg_obj)
+     evas_object_del(win->bg_obj);
+
+   if (win->event_obj) 
+     {
+        evas_object_event_callback_del(win->event_obj, EVAS_CALLBACK_MOUSE_UP,
+                                       _mixer_window_simple_mouse_up_cb);
+        evas_object_event_callback_del(win->event_obj, EVAS_CALLBACK_MOUSE_OUT,
+                                       _mixer_window_simple_mouse_out_cb);
+       evas_object_del(win->event_obj);
+     }
+   
+   if (win->window)
+     e_object_del(E_OBJECT(win->window));
+
+   if (win->mixer) 
+     {
+       mixer = win->mixer;
+       mixer->simple_win =  NULL;
+     }
+}
+
 /* Called when the value of the slider of the simple window is changed */
-static void _mixer_window_simple_changed_cb(void *data, Evas_Object *obj, void 
*event_info)
+static void 
+_mixer_window_simple_changed_cb(void *data, Evas_Object *obj, void *event_info)
 {
    Mixer_Win_Simple *win;
    
@@ -562,7 +618,8 @@
 }
 
 /* Called when the simple window is resized */
-static void _mixer_window_simple_resize_cb(E_Win *win)
+static void 
+_mixer_window_simple_resize_cb(E_Win *win)
 {
    Mixer_Win_Simple *simple_win;
    



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to