forked from enlightenment/efl
emotion: add empty infrastructure for suspending the pipeline.
SVN revision: 60909
This commit is contained in:
parent
4d9ad50d67
commit
8578459813
|
@ -109,6 +109,14 @@ enum _Emotion_Vis
|
||||||
EMOTION_VIS_LAST /* sentinel */
|
EMOTION_VIS_LAST /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
EMOTION_WAKEUP,
|
||||||
|
EMOTION_SLEEP,
|
||||||
|
EMOTION_DEEP_SLEEP,
|
||||||
|
EMOTION_HIBERNATE
|
||||||
|
} Emotion_Suspend;
|
||||||
|
|
||||||
typedef enum _Emotion_Module Emotion_Module;
|
typedef enum _Emotion_Module Emotion_Module;
|
||||||
typedef enum _Emotion_Event Emotion_Event;
|
typedef enum _Emotion_Event Emotion_Event;
|
||||||
typedef enum _Emotion_Meta_Info Emotion_Meta_Info;
|
typedef enum _Emotion_Meta_Info Emotion_Meta_Info;
|
||||||
|
@ -120,7 +128,7 @@ typedef enum _Emotion_Vis Emotion_Vis;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* api calls available */
|
/* api calls available */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -501,6 +509,9 @@ EAPI Eina_Bool emotion_object_vis_supported (const Evas_Object *obj,
|
||||||
EAPI void emotion_object_last_position_load (Evas_Object *obj);
|
EAPI void emotion_object_last_position_load (Evas_Object *obj);
|
||||||
EAPI void emotion_object_last_position_save (Evas_Object *obj);
|
EAPI void emotion_object_last_position_save (Evas_Object *obj);
|
||||||
|
|
||||||
|
EAPI void emotion_object_suspend_set (Evas_Object *obj, Emotion_Suspend state);
|
||||||
|
EAPI Emotion_Suspend emotion_object_suspend_get (Evas_Object *obj);
|
||||||
|
|
||||||
EAPI Eina_Bool emotion_object_extension_can_play_get(const Evas_Object *obj, const char *file);
|
EAPI Eina_Bool emotion_object_extension_can_play_get(const Evas_Object *obj, const char *file);
|
||||||
EAPI Eina_Bool emotion_object_extension_can_play_fast_get(const Evas_Object *obj, const char *file);
|
EAPI Eina_Bool emotion_object_extension_can_play_fast_get(const Evas_Object *obj, const char *file);
|
||||||
|
|
||||||
|
|
|
@ -55,18 +55,18 @@ struct _Smart_Data
|
||||||
|
|
||||||
const char *file;
|
const char *file;
|
||||||
Evas_Object *obj;
|
Evas_Object *obj;
|
||||||
double ratio;
|
|
||||||
double pos;
|
|
||||||
double seek_pos;
|
|
||||||
double len;
|
|
||||||
|
|
||||||
Ecore_Job *job;
|
Ecore_Job *job;
|
||||||
|
|
||||||
unsigned char play : 1;
|
|
||||||
unsigned char seek : 1;
|
|
||||||
unsigned char seeking : 1;
|
|
||||||
|
|
||||||
char *title;
|
char *title;
|
||||||
|
|
||||||
|
#ifdef HAVE_EIO
|
||||||
|
Eio_File *load_xattr;
|
||||||
|
Eio_File *save_xattr;
|
||||||
|
|
||||||
|
const char *time_seek;
|
||||||
|
#endif
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
char *info;
|
char *info;
|
||||||
double stat;
|
double stat;
|
||||||
|
@ -80,14 +80,18 @@ struct _Smart_Data
|
||||||
int button;
|
int button;
|
||||||
} spu;
|
} spu;
|
||||||
|
|
||||||
#ifdef HAVE_EIO
|
double ratio;
|
||||||
Eio_File *load_xattr;
|
double pos;
|
||||||
Eio_File *save_xattr;
|
double seek_pos;
|
||||||
|
double len;
|
||||||
const char *time_seek;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Emotion_Module_Options module_options;
|
Emotion_Module_Options module_options;
|
||||||
|
|
||||||
|
Emotion_Suspend state;
|
||||||
|
|
||||||
|
Eina_Bool play : 1;
|
||||||
|
Eina_Bool seek : 1;
|
||||||
|
Eina_Bool seeking : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void _mouse_move(void *data, Evas *ev, Evas_Object *obj, void *event_info);
|
static void _mouse_move(void *data, Evas *ev, Evas_Object *obj, void *event_info);
|
||||||
|
@ -424,6 +428,7 @@ emotion_object_play_set(Evas_Object *obj, Eina_Bool play)
|
||||||
if (!sd->module) return;
|
if (!sd->module) return;
|
||||||
if (!sd->video) return;
|
if (!sd->video) return;
|
||||||
sd->play = play;
|
sd->play = play;
|
||||||
|
if (sd->state != EMOTION_WAKEUP) emotion_object_suspend_set(obj, EMOTION_WAKEUP);
|
||||||
if (sd->play) sd->module->play(sd->video, sd->pos);
|
if (sd->play) sd->module->play(sd->video, sd->pos);
|
||||||
else sd->module->stop(sd->video);
|
else sd->module->stop(sd->video);
|
||||||
}
|
}
|
||||||
|
@ -1214,6 +1219,38 @@ emotion_object_extension_may_play_get(const char *file)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
emotion_object_suspend_set(Evas_Object *obj, Emotion_Suspend state)
|
||||||
|
{
|
||||||
|
Smart_Data *sd;
|
||||||
|
|
||||||
|
E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
|
||||||
|
switch (state)
|
||||||
|
{
|
||||||
|
case EMOTION_WAKEUP:
|
||||||
|
/* Restore the rendering pipeline, offset and everything back to play again (this will be called automatically by play_set) */
|
||||||
|
case EMOTION_SLEEP:
|
||||||
|
/* This destroy some part of the rendering pipeline */
|
||||||
|
case EMOTION_DEEP_SLEEP:
|
||||||
|
/* This destroy all the rendering pipeline and just keep the last rendered image (fullscreen) */
|
||||||
|
case EMOTION_HIBERNATE:
|
||||||
|
/* This destroy all the rendering pipeline and keep 1/4 of the last rendered image */
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
sd->state = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Emotion_Suspend
|
||||||
|
motion_object_suspend_get(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
Smart_Data *sd;
|
||||||
|
|
||||||
|
E_SMART_OBJ_GET_RETURN(sd, obj, E_OBJ_NAME, EMOTION_WAKEUP);
|
||||||
|
return sd->state;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************/
|
/*****************************/
|
||||||
/* Utility calls for modules */
|
/* Utility calls for modules */
|
||||||
/*****************************/
|
/*****************************/
|
||||||
|
@ -1748,6 +1785,7 @@ _smart_add(Evas_Object * obj)
|
||||||
sd = calloc(1, sizeof(Smart_Data));
|
sd = calloc(1, sizeof(Smart_Data));
|
||||||
if (!sd) return;
|
if (!sd) return;
|
||||||
EINA_REFCOUNT_INIT(sd);
|
EINA_REFCOUNT_INIT(sd);
|
||||||
|
sd->state = EMOTION_WAKEUP;
|
||||||
sd->obj = evas_object_image_add(evas_object_evas_get(obj));
|
sd->obj = evas_object_image_add(evas_object_evas_get(obj));
|
||||||
evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move, sd);
|
evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move, sd);
|
||||||
evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down, sd);
|
evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down, sd);
|
||||||
|
|
Loading…
Reference in New Issue