less segv's
authorraster <raster>
Mon, 23 Jan 2006 03:00:35 +0000 (03:00 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 23 Jan 2006 03:00:35 +0000 (03:00 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/e17/libs/emotion@19977 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/emotion_smart.c
src/modules/emotion_xine.c

index d7ff42b..f66bb56 100644 (file)
@@ -131,7 +131,7 @@ _emotion_module_close(Emotion_Video_Module *mod, void *video)
    
    handle = mod->handle;
    module_close = dlsym(handle, "module_close");
-   if (module_close) module_close(mod, video);
+   if ((module_close) && (video)) module_close(mod, video);
    dlclose(handle);
 }
 
@@ -190,6 +190,7 @@ emotion_object_file_set(Evas_Object *obj, const char *file)
    if ((file) && (file[0] != 0))
      {
         int w, h;
+       
        sd->file = strdup(file);
        if (sd->module)
          {
@@ -210,6 +211,7 @@ emotion_object_file_set(Evas_Object *obj, const char *file)
          {
             sd->module->file_close(sd->video);
             sd->video = NULL;
+            printf("VIDEO -> NULL\n");
             evas_object_image_size_set(sd->obj, 0, 0);
          }
      }
@@ -1023,7 +1025,7 @@ _pixels_get(void *data, Evas_Object *obj)
              rows, 
             &rows[ps.h], 
             &rows[ps.h + (ps.h / 2)]))
-         evas_object_image_pixels_import(obj, &ps);
+         evas_object_image_pixels_import(obj, &ps);
        evas_object_image_pixels_dirty_set(obj, 0);
        free(ps.rows);
    }
@@ -1088,8 +1090,9 @@ _smart_del(Evas_Object * obj)
    Smart_Data *sd;
    sd = evas_object_smart_data_get(obj);
    if (!sd) return;
+   printf("DEL: sd->video = %p\n", sd->video);
    if (sd->video) sd->module->file_close(sd->video);
-   if (sd->module) _emotion_module_close(sd->module, sd->video);
+   _emotion_module_close(sd->module, sd->video);
    evas_object_del(sd->obj);
    if (sd->file) free(sd->file);
    if (sd->job) ecore_job_del(sd->job);
index cda2b5d..a909dcf 100644 (file)
@@ -360,7 +360,7 @@ em_file_close(void *ef)
    Emotion_Xine_Video *ev;
    
    ev = (Emotion_Xine_Video *)ef;
-
+   if (!ev) return;
    printf("EX pause end...\n");
    if (!emotion_object_play_get(ev->obj))
 //   if (xine_get_param(ev->stream, XINE_PARAM_SPEED) == XINE_SPEED_PAUSE)