vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Fri Nov 30 19:13:24 2012 +0200| [405da96034f4cf70855c2706ba5a1e20f2c9fded] | committer: Rémi Denis-Courmont
inhibit: add separate flags for audio and video > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=405da96034f4cf70855c2706ba5a1e20f2c9fded --- include/vlc_inhibit.h | 16 +++++++++++++++- modules/misc/inhibit/mce.c | 5 +++-- modules/misc/inhibit/xdg.c | 3 ++- modules/misc/inhibit/xscreensaver.c | 5 +++-- src/video_output/inhibit.h | 5 ----- src/video_output/window.c | 4 ++-- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/include/vlc_inhibit.h b/include/vlc_inhibit.h index 5ac460c..b1f7330 100644 --- a/include/vlc_inhibit.h +++ b/include/vlc_inhibit.h @@ -29,12 +29,26 @@ typedef struct vlc_inhibit vlc_inhibit_t; typedef struct vlc_inhibit_sys vlc_inhibit_sys_t; +enum vlc_inhibit_flags +{ + VLC_INHIBIT_NONE=0 /*< No inhibition */, + VLC_INHIBIT_SUSPEND=0x1 /*< Processor is in use - do not suspend */, + VLC_INHIBIT_DISPLAY=0x2 /*< Display is in use - do not blank/lock */, +#define VLC_INHIBIT_AUDIO (VLC_INHIBIT_SUSPEND) +#define VLC_INHIBIT_VIDEO (VLC_INHIBIT_SUSPEND|VLC_INHIBIT_DISPLAY) +}; + struct vlc_inhibit { VLC_COMMON_MEMBERS vlc_inhibit_sys_t *p_sys; - void (*inhibit) (vlc_inhibit_t *, bool); + void (*inhibit) (vlc_inhibit_t *, unsigned flags); }; +static inline void vlc_inhibit_Set (vlc_inhibit_t *ih, unsigned flags) +{ + ih->inhibit (ih, flags); +} + #endif diff --git a/modules/misc/inhibit/mce.c b/modules/misc/inhibit/mce.c index d49e969..71834b9 100644 --- a/modules/misc/inhibit/mce.c +++ b/modules/misc/inhibit/mce.c @@ -44,7 +44,7 @@ vlc_module_begin () set_callbacks (Open, Close) vlc_module_end () -static void Inhibit (vlc_inhibit_t *, bool); +static void Inhibit (vlc_inhibit_t *, unsigned); static void Timer (void *data); struct vlc_inhibit_sys @@ -97,9 +97,10 @@ static void Close (vlc_object_t *obj) free (sys); } -static void Inhibit (vlc_inhibit_t *ih, bool unblank) +static void Inhibit (vlc_inhibit_t *ih, unsigned flags) { vlc_inhibit_sys_t *sys = ih->p_sys; + bool unblank = (flags & VLC_INHIBIT_DISPLAY) != 0; /* The shortest blanking interval is 10s on N900, 15s on N9 */ const mtime_t interval = 9 * CLOCK_FREQ; diff --git a/modules/misc/inhibit/xdg.c b/modules/misc/inhibit/xdg.c index 56d065b7..191568a 100644 --- a/modules/misc/inhibit/xdg.c +++ b/modules/misc/inhibit/xdg.c @@ -75,9 +75,10 @@ static void Timer (void *data) } } -static void Inhibit (vlc_inhibit_t *ih, bool suspend) +static void Inhibit (vlc_inhibit_t *ih, unsigned mask) { vlc_inhibit_sys_t *sys = ih->p_sys; + bool suspend = (mask & VLC_INHIBIT_DISPLAY) != 0; mtime_t delay = suspend ? 30 * CLOCK_FREQ : INT64_C(0); vlc_timer_schedule (sys->timer, false, delay, delay); diff --git a/modules/misc/inhibit/xscreensaver.c b/modules/misc/inhibit/xscreensaver.c index 819d74f..c219c66 100644 --- a/modules/misc/inhibit/xscreensaver.c +++ b/modules/misc/inhibit/xscreensaver.c @@ -48,7 +48,7 @@ static int Activate ( vlc_object_t * ); static void Deactivate ( vlc_object_t * ); static void Timer( void * ); -static void Inhibit( vlc_inhibit_t *, bool ); +static void Inhibit( vlc_inhibit_t *, unsigned ); struct vlc_inhibit_sys { @@ -122,8 +122,9 @@ static void Deactivate( vlc_object_t *p_this ) free( p_sys ); } -static void Inhibit( vlc_inhibit_t *p_ih, bool suspend ) +static void Inhibit( vlc_inhibit_t *p_ih, unsigned mask ) { + bool suspend = (mask & VLC_INHIBIT_DISPLAY) != 0; mtime_t d = suspend ? 30*CLOCK_FREQ : 0; vlc_timer_schedule( p_ih->p_sys->timer, false, d, d ); } diff --git a/src/video_output/inhibit.h b/src/video_output/inhibit.h index 2df2c82..764b8a9 100644 --- a/src/video_output/inhibit.h +++ b/src/video_output/inhibit.h @@ -25,9 +25,4 @@ vlc_inhibit_t *vlc_inhibit_Create (vlc_object_t *); void vlc_inhibit_Destroy (vlc_inhibit_t *); - -static inline void vlc_inhibit_Set (vlc_inhibit_t *ih, bool suspend) -{ - ih->inhibit (ih, suspend); -} #endif diff --git a/src/video_output/window.c b/src/video_output/window.c index 7efc8eb..4f1951f 100644 --- a/src/video_output/window.c +++ b/src/video_output/window.c @@ -97,7 +97,7 @@ vout_window_t *vout_window_New(vlc_object_t *obj, cfg->type == VOUT_WINDOW_TYPE_XID) { w->inhibit = vlc_inhibit_Create(VLC_OBJECT (window)); if (w->inhibit != NULL) - vlc_inhibit_Set(w->inhibit, true); + vlc_inhibit_Set(w->inhibit, VLC_INHIBIT_VIDEO); /* FIXME: ^ wait for vout activation, pause */ } else @@ -121,7 +121,7 @@ void vout_window_Delete(vout_window_t *window) window_t *w = (window_t *)window; if (w->inhibit) { - vlc_inhibit_Set (w->inhibit, false); + vlc_inhibit_Set (w->inhibit, VLC_INHIBIT_NONE); vlc_inhibit_Destroy (w->inhibit); } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
