forked from enlightenment/efl
remove seek job... let the seek request thread do it all now
SVN revision: 10898
This commit is contained in:
parent
ad7ff874ab
commit
7ed4bd13cd
|
@ -42,8 +42,6 @@ struct _Smart_Data
|
|||
double seek_pos;
|
||||
double len;
|
||||
|
||||
Ecore_Job *job;
|
||||
|
||||
unsigned char play : 1;
|
||||
unsigned char seek : 1;
|
||||
|
||||
|
@ -64,7 +62,6 @@ struct _Smart_Data
|
|||
|
||||
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);
|
||||
|
@ -241,10 +238,7 @@ emotion_object_position_set(Evas_Object *obj, double sec)
|
|||
if (!sd->module) return;
|
||||
if (!sd->video) return;
|
||||
sd->seek_pos = sec;
|
||||
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);
|
||||
sd->module->pos_set(sd->video, sd->seek_pos);
|
||||
}
|
||||
|
||||
double
|
||||
|
@ -880,22 +874,6 @@ _mouse_down(void *data, Evas *ev, Evas_Object *obj, void *event_info)
|
|||
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)
|
||||
|
@ -993,7 +971,6 @@ _smart_del(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);
|
||||
|
|
|
@ -331,8 +331,6 @@ em_file_close(void *ef)
|
|||
Emotion_Xine_Video *ev;
|
||||
|
||||
ev = (Emotion_Xine_Video *)ef;
|
||||
printf("xn stop\n");
|
||||
xine_stop(ev->stream);
|
||||
ev->delete_me = 1;
|
||||
// pthread_mutex_lock(&(ev->seek_mutex));
|
||||
pthread_cond_broadcast(&(ev->seek_cond));
|
||||
|
@ -346,11 +344,9 @@ em_file_close(void *ef)
|
|||
ecore_main_fd_handler_del(ev->fd_ev_handler);
|
||||
close(ev->fd_ev_write);
|
||||
close(ev->fd_ev_read);
|
||||
printf("xn close\n");
|
||||
xine_stop(ev->stream);
|
||||
xine_close(ev->stream);
|
||||
printf("xn dispose\n");
|
||||
xine_dispose(ev->stream);
|
||||
printf("xn dispose evq\n");
|
||||
xine_event_dispose_queue(ev->queue);
|
||||
if (ev->video) xine_close_video_driver(decoder, ev->video);
|
||||
if (ev->audio) xine_close_audio_driver(decoder, ev->audio);
|
||||
|
@ -960,19 +956,18 @@ _em_seek(void *par)
|
|||
pthread_cond_wait(&(ev->seek_cond), &(ev->seek_mutex));
|
||||
while (ev->seek_to > 0)
|
||||
{
|
||||
if (ppos != ev->seek_to_pos)
|
||||
{
|
||||
ppos = ev->seek_to_pos;
|
||||
xine_play(ev->stream, 0, ev->seek_to_pos * 1000);
|
||||
}
|
||||
again:
|
||||
ppos = ev->seek_to_pos;
|
||||
xine_play(ev->stream, 0, ppos * 1000);
|
||||
ev->seek_to = 0;
|
||||
if (ev->delete_me) return NULL;
|
||||
}
|
||||
if (!ev->play)
|
||||
xine_set_param(ev->stream, XINE_PARAM_SPEED, XINE_SPEED_PAUSE);
|
||||
if (ev->delete_me) return NULL;
|
||||
usleep(1000000 / 10);
|
||||
}
|
||||
if (ppos != ev->seek_to_pos)
|
||||
goto again;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue