double seek_pos;
double len;
+ Ecore_Job *job;
+
unsigned char play : 1;
unsigned char seek : 1;
static void _mouse_move(void *data, Evas *ev, Evas_Object *obj, void *event_info);
static void _mouse_down(void *data, Evas *ev, Evas_Object *obj, void *event_info);
+static void _pos_set_job(void *data);
static void _pixels_get(void *data, Evas_Object *obj);
static void _smart_init(void);
if (!sd->module) return;
if (!sd->video) return;
sd->seek_pos = sec;
- sd->module->pos_set(sd->video, sd->seek_pos);
+ sd->seek = 1;
+ sd->pos = sd->seek_pos;
+ if (sd->job) ecore_job_del(sd->job);
+ sd->job = ecore_job_add(_pos_set_job, obj);
}
double
sd->module->event_mouse_button_feed(sd->video, 1, x, y);
}
+static void
+_pos_set_job(void *data)
+{
+ Evas_Object *obj;
+ Smart_Data *sd;
+
+ obj = data;
+ E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
+ sd->job = NULL;
+ if (sd->seek)
+ {
+ sd->module->pos_set(sd->video, sd->seek_pos);
+ sd->seek = 0;
+ }
+}
+
/* called by evas when it needs pixels for the image object */
static void
_pixels_get(void *data, Evas_Object *obj)
if (sd->module) _emotion_module_close(sd->module);
evas_object_del(sd->obj);
if (sd->file) free(sd->file);
+ if (sd->job) ecore_job_del(sd->job);
if (sd->progress.info) free(sd->progress.info);
if (sd->ref.file) free(sd->ref.file);
free(sd);