Commit ab044dcd authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

vlc_inhibit_t: plugin type for screen saver inhibition

parent 82108a21
/*****************************************************************************
* 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
...@@ -72,6 +72,7 @@ pluginsinclude_HEADERS = \ ...@@ -72,6 +72,7 @@ pluginsinclude_HEADERS = \
../include/vlc_http.h \ ../include/vlc_http.h \
../include/vlc_httpd.h \ ../include/vlc_httpd.h \
../include/vlc_image.h \ ../include/vlc_image.h \
../include/vlc_inhibit.h \
../include/vlc_input.h \ ../include/vlc_input.h \
../include/vlc_input_item.h \ ../include/vlc_input_item.h \
../include/vlc_main.h \ ../include/vlc_main.h \
...@@ -357,6 +358,8 @@ SOURCES_libvlc_common = \ ...@@ -357,6 +358,8 @@ SOURCES_libvlc_common = \
video_output/display.c \ video_output/display.c \
video_output/display.h \ video_output/display.h \
video_output/event.h \ video_output/event.h \
video_output/inhibit.c \
video_output/inhibit.h \
video_output/snapshot.c \ video_output/snapshot.c \
video_output/snapshot.h \ video_output/snapshot.h \
video_output/statistic.h \ video_output/statistic.h \
......
/*****************************************************************************
* 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 <vlc_common.h>
#include "inhibit.h"
#include <libvlc.h>
#include <assert.h>
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);
}
/*****************************************************************************
* 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.h>
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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment