Beispiel #1
0
EAPI Eina_Bool
emotion_object_file_set(Evas_Object *obj, const char *file)
{
   Smart_Data *sd;

   E_SMART_OBJ_GET_RETURN(sd, obj, E_OBJ_NAME, EINA_FALSE);

   DBG("file=%s", file);

   if (!eina_stringshare_replace(&sd->file, file))
     return EINA_TRUE;

   if (!sd->engine_instance)
     {
        WRN("No engine choosen. Call emotion_object_init()?");
        return EINA_FALSE;
     }

   sd->video.w = 0;
   sd->video.h = 0;
   if ((file) && (file[0] != 0))
     {
        eina_stringshare_replace(&sd->file, file);
        emotion_engine_instance_file_close(sd->engine_instance);
        evas_object_image_data_set(sd->obj, NULL);
        evas_object_image_size_set(sd->obj, 1, 1);
        _emotion_image_data_zero(sd->obj);
        sd->open = 0;
        if (!emotion_engine_instance_file_open(sd->engine_instance, sd->file))
          {
             WRN("Couldn't open file=%s", sd->file);
             return EINA_FALSE;
          }
        DBG("successfully opened file=%s", sd->file);
        sd->pos = 0.0;
        if (sd->play) emotion_engine_instance_play(sd->engine_instance, 0.0);
     }
   else
     {
        emotion_engine_instance_file_close(sd->engine_instance);
        evas_object_image_data_set(sd->obj, NULL);
        evas_object_image_size_set(sd->obj, 1, 1);
        _emotion_image_data_zero(sd->obj);
        eina_stringshare_replace(&sd->file, NULL);
     }

   if (sd->anim) ecore_animator_del(sd->anim);
   sd->anim = NULL;

#ifdef HAVE_EIO
   /* Only cancel the load_xattr or we will loose ref to time_seek stringshare */
   if (sd->load_xattr) eio_file_cancel(sd->load_xattr);
   sd->load_xattr = NULL;
   if (sd->save_xattr) eio_file_cancel(sd->save_xattr);
   sd->save_xattr = NULL;
#endif

   return EINA_TRUE;
}
Beispiel #2
0
static void
_eio_monitor_free(Eio_Monitor *monitor)
{
   if (!monitor->delete_me)
     eina_hash_del(_eio_monitors, monitor->path, monitor);

   if (monitor->exist)
     {
        eio_file_cancel(monitor->exist);
        monitor->exist = NULL;
     }

   if (monitor->backend)
     {
        if (!monitor->fallback)
          eio_monitor_backend_del(monitor);
        else
          eio_monitor_fallback_del(monitor);
     }

   if (_eio_log_dom_global != -1)
     INF("Stopping monitor on '%s'.", monitor->path);

   eina_stringshare_del(monitor->path);
   free(monitor);
}
Beispiel #3
0
static void
_smart_data_free(Smart_Data *sd)
{
#ifdef HAVE_EIO
   /* Only cancel the load_xattr or we will loose ref to time_seek stringshare */
   if (sd->load_xattr) eio_file_cancel(sd->load_xattr);
   sd->load_xattr = NULL;
   if (sd->save_xattr) eio_file_cancel(sd->save_xattr);
   sd->save_xattr = NULL;
#endif
   
   if (sd->engine_instance)
     {
        emotion_engine_instance_file_close(sd->engine_instance);
        emotion_engine_instance_del(sd->engine_instance);
     }
   sd->engine_instance = NULL;
   if (sd->obj) evas_object_del(sd->obj);
   sd->obj = NULL;
   if (sd->crop.clipper) evas_object_del(sd->crop.clipper);
   sd->crop.clipper = NULL;
   if (sd->bg) evas_object_del(sd->bg);
   sd->bg = NULL;
   if (sd->file) eina_stringshare_del(sd->file);
   sd->file = NULL;
   if (sd->job) ecore_job_del(sd->job);
   sd->job = NULL;
   if (sd->anim) ecore_animator_del(sd->anim);
   sd->anim = NULL;
   free(sd->progress.info);
   sd->progress.info = NULL;
   free(sd->ref.file);
   sd->ref.file = NULL;
   free(sd);

   /* TODO: remove legacy: emotion used to have no shutdown, call automatically */
   emotion_shutdown();
}
Beispiel #4
0
static void
_eio_monitor_free(Eio_Monitor *monitor)
{
   eina_hash_del(_eio_monitors, monitor->path, monitor);

   if (monitor->exist) eio_file_cancel(monitor->exist);

   if (monitor->backend)
     {
        if (!monitor->fallback)
          eio_monitor_backend_del(monitor);
        else
          eio_monitor_fallback_del(monitor);
     }

   eina_stringshare_del(monitor->path);
   free(monitor);
}
Beispiel #5
0
static void
_del(void *priv)
{
   Enna_Localfiles_Priv *p = priv;
   Ecore_Event_Handler *handler;

   if (p->file)
     eio_file_cancel(p->file);

   /* EINA_LIST_FREE(p->monitor_handlers, handler) */
   /*   { */
   /*      ecore_event_handler_del(handler); */
   /*   } */

   /* if (p->monitor) */
   /*   eio_monitor_del(p->monitor); */

   eina_stringshare_del(p->root);
   eina_stringshare_del(p->relative_path);
   ENNA_FREE(p);
}