forked from enlightenment/terminology
media: fix replay on stop bug in tycat
even if stop button in media control has been clicked, media is not stopped but is replayed in tycat Fixes T1560
This commit is contained in:
parent
f8429209bb
commit
6c8af4f82c
|
@ -1326,9 +1326,15 @@ media_play_set(Evas_Object *obj, Eina_Bool play)
|
|||
if ((!sd) || (sd->type != TYPE_MOV)) return;
|
||||
emotion_object_play_set(sd->o_img, play);
|
||||
if (play)
|
||||
edje_object_signal_emit(sd->o_ctrl, "play,set", "terminology");
|
||||
{
|
||||
evas_object_smart_callback_call(obj, "play", NULL);
|
||||
edje_object_signal_emit(sd->o_ctrl, "play,set", "terminology");
|
||||
}
|
||||
else
|
||||
edje_object_signal_emit(sd->o_ctrl, "pause,set", "terminology");
|
||||
{
|
||||
evas_object_smart_callback_call(obj, "pause", NULL);
|
||||
edje_object_signal_emit(sd->o_ctrl, "pause,set", "terminology");
|
||||
}
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
|
@ -1344,6 +1350,7 @@ media_stop(Evas_Object *obj)
|
|||
{
|
||||
Media *sd = evas_object_smart_data_get(obj);
|
||||
if ((!sd) || (sd->type != TYPE_MOV)) return;
|
||||
evas_object_smart_callback_call(obj, "stop", NULL);
|
||||
evas_object_del(obj);
|
||||
}
|
||||
|
||||
|
|
|
@ -1287,6 +1287,36 @@ _smart_media_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *info E
|
|||
if (blk->obj == obj) blk->obj = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_media_play(void *data, Evas_Object *obj, void *info EINA_UNUSED)
|
||||
{
|
||||
Termblock *blk = data;
|
||||
|
||||
if (blk->obj != obj) return;
|
||||
|
||||
blk->mov_state = MOVIE_STATE_PLAY;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_media_pause(void *data, Evas_Object *obj, void *info EINA_UNUSED)
|
||||
{
|
||||
Termblock *blk = data;
|
||||
|
||||
if (blk->obj != obj) return;
|
||||
|
||||
blk->mov_state = MOVIE_STATE_PAUSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_media_stop(void *data, Evas_Object *obj, void *info EINA_UNUSED)
|
||||
{
|
||||
Termblock *blk = data;
|
||||
|
||||
if (blk->obj != obj) return;
|
||||
|
||||
blk->mov_state = MOVIE_STATE_STOP;
|
||||
}
|
||||
|
||||
static void
|
||||
_block_edje_signal_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *sig, const char *src)
|
||||
{
|
||||
|
@ -1779,12 +1809,18 @@ _block_media_activate(Evas_Object *obj, Termblock *blk)
|
|||
else if (blk->scale_fill) media = MEDIA_BG;
|
||||
else if (blk->thumb) media = MEDIA_THUMB;
|
||||
// media = MEDIA_POP;
|
||||
if (!blk->was_active_before) media |= MEDIA_SAVE;
|
||||
else media |= MEDIA_RECOVER | MEDIA_SAVE;
|
||||
if (!blk->was_active_before || blk->mov_state == MOVIE_STATE_STOP)
|
||||
media |= MEDIA_SAVE;
|
||||
else
|
||||
media |= MEDIA_RECOVER | MEDIA_SAVE;
|
||||
blk->obj = media_add(obj, blk->path, sd->config, media, &type);
|
||||
if (type == TYPE_MOV) media_play_set(blk->obj, !blk->mov_paused);
|
||||
if (type == TYPE_MOV)
|
||||
media_play_set(blk->obj, blk->mov_state == MOVIE_STATE_PLAY);
|
||||
evas_object_event_callback_add
|
||||
(blk->obj, EVAS_CALLBACK_DEL, _smart_media_del, blk);
|
||||
evas_object_smart_callback_add(blk->obj, "play", _smart_media_play, blk);
|
||||
evas_object_smart_callback_add(blk->obj, "pause", _smart_media_pause, blk);
|
||||
evas_object_smart_callback_add(blk->obj, "stop", _smart_media_stop, blk);
|
||||
blk->type = type;
|
||||
evas_object_smart_member_add(blk->obj, obj);
|
||||
mctrl = media_control_get(blk->obj);
|
||||
|
@ -1822,7 +1858,6 @@ _block_obj_del(Termblock *blk)
|
|||
{
|
||||
if (!blk->obj) return;
|
||||
|
||||
blk->mov_paused = !media_play_get(blk->obj);
|
||||
evas_object_event_callback_del_full
|
||||
(blk->obj, EVAS_CALLBACK_DEL,
|
||||
_smart_media_del, blk);
|
||||
|
|
|
@ -45,6 +45,10 @@ typedef struct _Termexp Termexp;
|
|||
// Only for testing purpose
|
||||
//#define SUPPORT_80_132_COLUMNS 1
|
||||
|
||||
#define MOVIE_STATE_PLAY 0
|
||||
#define MOVIE_STATE_PAUSE 1
|
||||
#define MOVIE_STATE_STOP 2
|
||||
|
||||
struct _Termatt
|
||||
{
|
||||
unsigned char fg, bg;
|
||||
|
@ -203,7 +207,7 @@ struct _Termblock
|
|||
unsigned char was_active : 1;
|
||||
unsigned char was_active_before : 1;
|
||||
|
||||
unsigned char mov_paused : 1; // movie paused state marker
|
||||
unsigned char mov_state : 2; // movie state marker
|
||||
};
|
||||
|
||||
struct _Termexp
|
||||
|
|
Loading…
Reference in New Issue