From: Rémi Denis-Courmont Date: Sat, 17 Oct 2009 18:01:57 +0000 (+0300) Subject: vlc_inhibit_t: plugin type for screen saver inhibition X-Git-Tag: 1.1.0-ff~2829 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=ab044dcd717cacb679087ff580ccd6bbc8c847ca;p=vlc vlc_inhibit_t: plugin type for screen saver inhibition --- diff --git a/include/vlc_inhibit.h b/include/vlc_inhibit.h new file mode 100644 index 0000000000..3e05a1d3e2 --- /dev/null +++ b/include/vlc_inhibit.h @@ -0,0 +1,41 @@ +/***************************************************************************** + * vlc_inhibit.h: VLC screen saver inhibition + ***************************************************************************** + * Copyright (C) 2009 Rémi Denis-Courmont + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +/** + * \file + * This file defines the interface for screen-saver inhibition modules + */ + +#ifndef VLC_INHIBIT_H +# define VLC_INHIBIT_H 1 + +typedef struct vlc_inhibit vlc_inhibit_t; +typedef struct vlc_inhibit_sys vlc_inhibit_sys_t; + +struct vlc_inhibit +{ + VLC_COMMON_MEMBERS + + uint32_t window_id; + vlc_inhibit_sys_t *p_sys; + void (*inhibit) (vlc_inhibit_t *, bool); +}; + +#endif diff --git a/src/Makefile.am b/src/Makefile.am index 5ceb0d1e6a..635252060d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -72,6 +72,7 @@ pluginsinclude_HEADERS = \ ../include/vlc_http.h \ ../include/vlc_httpd.h \ ../include/vlc_image.h \ + ../include/vlc_inhibit.h \ ../include/vlc_input.h \ ../include/vlc_input_item.h \ ../include/vlc_main.h \ @@ -357,6 +358,8 @@ SOURCES_libvlc_common = \ video_output/display.c \ video_output/display.h \ video_output/event.h \ + video_output/inhibit.c \ + video_output/inhibit.h \ video_output/snapshot.c \ video_output/snapshot.h \ video_output/statistic.h \ diff --git a/src/video_output/inhibit.c b/src/video_output/inhibit.c new file mode 100644 index 0000000000..b9e5cc9b78 --- /dev/null +++ b/src/video_output/inhibit.c @@ -0,0 +1,65 @@ +/***************************************************************************** + * inhibit.c: screen saver inhibition + ***************************************************************************** + * Copyright (C) 2009 Rémi Denis-Courmont + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include "inhibit.h" +#include +#include + +typedef struct +{ + vlc_inhibit_t ih; + module_t *module; +} inhibit_t; + +vlc_inhibit_t *vlc_inhibit_Create (vlc_object_t *parent, int_fast32_t wid) +{ + static char const typename[] = "inhibit"; + inhibit_t *priv = vlc_custom_create (parent, sizeof (*priv), + VLC_OBJECT_GENERIC, typename); + if (priv == NULL) + return NULL; + + vlc_inhibit_t *ih = &priv->ih; + ih->window_id = wid; + ih->p_sys = NULL; + ih->inhibit = NULL; + + vlc_object_attach (ih, parent); + priv->module = module_need (ih, "inhibit", NULL, false); + if (priv->module == NULL) + { + vlc_object_release (ih); + ih = NULL; + } + return ih; +} + +void vlc_inhibit_Destroy (vlc_inhibit_t *ih) +{ + assert (ih != NULL); + + module_unneed (ih, ((inhibit_t *)ih)->module); + vlc_object_release (ih); +} diff --git a/src/video_output/inhibit.h b/src/video_output/inhibit.h new file mode 100644 index 0000000000..e3d1db421e --- /dev/null +++ b/src/video_output/inhibit.h @@ -0,0 +1,33 @@ +/***************************************************************************** + * inhibit.h: screen saver inhibition + ***************************************************************************** + * Copyright (C) 2009 Rémi Denis-Courmont + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifndef LIBVLC_INHIBIT_H +# define LIVCLC_INHIBIT_H 1 + +# include + +vlc_inhibit_t *vlc_inhibit_Create (vlc_object_t *, int_fast32_t); +void vlc_inhibit_Destroy (vlc_inhibit_t *); + +static inline void vlc_inhibit_Set (vlc_inhibit_t *ih, bool suspend) +{ + return ih->inhibit (ih, suspend); +} +#endif