mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Configurable enable DPMS, while black screen is displayed.
This commit is contained in:
parent
ec58e45607
commit
700c8e8767
@ -1,5 +1,10 @@
|
|||||||
|
User master_red
|
||||||
|
Date: Mon Aug 10 15:29:33 CEST 2015
|
||||||
|
|
||||||
|
Configurable enable DPMS, while black screen is displayed.
|
||||||
|
|
||||||
User johns
|
User johns
|
||||||
Date:
|
Date: Tue Jun 30 10:12:09 CET 2015
|
||||||
|
|
||||||
Fix bug: wrong and crash, if vdr draws pixmaps outside OSD.
|
Fix bug: wrong and crash, if vdr draws pixmaps outside OSD.
|
||||||
Fix bug: wrong version number check for av_frame_alloc(), ...
|
Fix bug: wrong version number check for av_frame_alloc(), ...
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR \n"
|
"Project-Id-Version: VDR \n"
|
||||||
"Report-Msgid-Bugs-To: <see README>\n"
|
"Report-Msgid-Bugs-To: <see README>\n"
|
||||||
"POT-Creation-Date: 2014-10-31 12:36+0100\n"
|
"POT-Creation-Date: 2015-06-10 21:21+0200\n"
|
||||||
"PO-Revision-Date: blabla\n"
|
"PO-Revision-Date: blabla\n"
|
||||||
"Last-Translator: blabla\n"
|
"Last-Translator: blabla\n"
|
||||||
"Language-Team: blabla\n"
|
"Language-Team: blabla\n"
|
||||||
@ -501,6 +501,9 @@ msgstr "Unterbrechen stoppt X11"
|
|||||||
msgid "Video"
|
msgid "Video"
|
||||||
msgstr "Video"
|
msgstr "Video"
|
||||||
|
|
||||||
|
msgid "Enable Screensaver(DPMS) at black screen"
|
||||||
|
msgstr "Bildschirmschoner(DPMS) bei schwarzen Bild aktivieren"
|
||||||
|
|
||||||
msgid "Video background color (RGB)"
|
msgid "Video background color (RGB)"
|
||||||
msgstr "Video Hintergrundfrabe (RGB)"
|
msgstr "Video Hintergrundfrabe (RGB)"
|
||||||
|
|
||||||
|
@ -165,6 +165,10 @@ static int ConfigPipAltVideoWidth; ///< config pip alt. video width in %
|
|||||||
static int ConfigPipAltVideoHeight = 50; ///< config pip alt. video height in %
|
static int ConfigPipAltVideoHeight = 50; ///< config pip alt. video height in %
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
static char ConfigEnableDPMSatBlackScreen; ///< Enable DPMS(Screensaver) while displaying black screen(radio)
|
||||||
|
#endif
|
||||||
|
|
||||||
static volatile int DoMakePrimary; ///< switch primary device to this
|
static volatile int DoMakePrimary; ///< switch primary device to this
|
||||||
|
|
||||||
#define SUSPEND_EXTERNAL -1 ///< play external suspend mode
|
#define SUSPEND_EXTERNAL -1 ///< play external suspend mode
|
||||||
@ -764,6 +768,9 @@ class cMenuSetupSoft:public cMenuSetupPage
|
|||||||
int PipAltVideoHeight;
|
int PipAltVideoHeight;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
int EnableDPMSatBlackScreen;
|
||||||
|
#endif
|
||||||
/// @}
|
/// @}
|
||||||
private:
|
private:
|
||||||
inline cOsdItem * CollapsedItem(const char *, int &, const char * = NULL);
|
inline cOsdItem * CollapsedItem(const char *, int &, const char * = NULL);
|
||||||
@ -882,6 +889,11 @@ void cMenuSetupSoft::Create(void)
|
|||||||
//
|
//
|
||||||
Add(CollapsedItem(tr("Video"), Video));
|
Add(CollapsedItem(tr("Video"), Video));
|
||||||
if (Video) {
|
if (Video) {
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
Add(new
|
||||||
|
cMenuEditBoolItem(tr("Enable Screensaver(DPMS) at black screen"),
|
||||||
|
&EnableDPMSatBlackScreen, trVDR("no"), trVDR("yes")));
|
||||||
|
#endif
|
||||||
Add(new cMenuEditStraItem(trVDR("4:3 video display format"),
|
Add(new cMenuEditStraItem(trVDR("4:3 video display format"),
|
||||||
&Video4to3DisplayFormat, 3, video_display_formats_4_3));
|
&Video4to3DisplayFormat, 3, video_display_formats_4_3));
|
||||||
Add(new cMenuEditStraItem(trVDR("16:9+other video display format"),
|
Add(new cMenuEditStraItem(trVDR("16:9+other video display format"),
|
||||||
@ -1198,6 +1210,11 @@ cMenuSetupSoft::cMenuSetupSoft(void)
|
|||||||
PipAltVideoWidth = ConfigPipAltVideoWidth;
|
PipAltVideoWidth = ConfigPipAltVideoWidth;
|
||||||
PipAltVideoHeight = ConfigPipAltVideoHeight;
|
PipAltVideoHeight = ConfigPipAltVideoHeight;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
EnableDPMSatBlackScreen = ConfigEnableDPMSatBlackScreen;
|
||||||
|
#endif
|
||||||
|
|
||||||
Create();
|
Create();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1362,6 +1379,12 @@ void cMenuSetupSoft::Store(void)
|
|||||||
SetupStore("pip.Alt.VideoHeight", ConfigPipAltVideoHeight =
|
SetupStore("pip.Alt.VideoHeight", ConfigPipAltVideoHeight =
|
||||||
PipAltVideoHeight);
|
PipAltVideoHeight);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
SetupStore("EnableDPMSatBlackScreen", ConfigEnableDPMSatBlackScreen =
|
||||||
|
EnableDPMSatBlackScreen);
|
||||||
|
SetDPMSatBlackScreen(ConfigEnableDPMSatBlackScreen);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
@ -3241,6 +3264,15 @@ bool cPluginSoftHdDevice::SetupParse(const char *name, const char *value)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
if (!strcasecmp(name, "EnableDPMSatBlackScreen")) {
|
||||||
|
ConfigEnableDPMSatBlackScreen = atoi(value);
|
||||||
|
SetDPMSatBlackScreen(ConfigEnableDPMSatBlackScreen);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
52
video.c
52
video.c
@ -430,6 +430,11 @@ static int OsdDirtyHeight; ///< osd dirty area height
|
|||||||
|
|
||||||
static int64_t VideoDeltaPTS; ///< FIXME: fix pts
|
static int64_t VideoDeltaPTS; ///< FIXME: fix pts
|
||||||
|
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
static char DPMSDisabled; ///< flag we have disabled dpms
|
||||||
|
static char EnableDPMSatBlackScreen; ///< flag we should enable dpms at black screen
|
||||||
|
#endif
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// Common Functions
|
// Common Functions
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
@ -438,6 +443,13 @@ static void VideoThreadLock(void); ///< lock video thread
|
|||||||
static void VideoThreadUnlock(void); ///< unlock video thread
|
static void VideoThreadUnlock(void); ///< unlock video thread
|
||||||
static void VideoThreadExit(void); ///< exit/kill video thread
|
static void VideoThreadExit(void); ///< exit/kill video thread
|
||||||
|
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
static void X11SuspendScreenSaver(xcb_connection_t *, int);
|
||||||
|
static int X11HaveDPMS(xcb_connection_t *);
|
||||||
|
static void X11DPMSReenable(xcb_connection_t *);
|
||||||
|
static void X11DPMSDisable(xcb_connection_t *);
|
||||||
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Update video pts.
|
/// Update video pts.
|
||||||
///
|
///
|
||||||
@ -4909,7 +4921,20 @@ static void VaapiDisplayFrame(void)
|
|||||||
decoder->LastSurface = decoder->BlackSurface;
|
decoder->LastSurface = decoder->BlackSurface;
|
||||||
#endif
|
#endif
|
||||||
VaapiMessage(3, "video/vaapi: black surface displayed\n");
|
VaapiMessage(3, "video/vaapi: black surface displayed\n");
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
if (EnableDPMSatBlackScreen && DPMSDisabled) {
|
||||||
|
Debug(3, "Black surface, DPMS enabled");
|
||||||
|
X11DPMSReenable(Connection);
|
||||||
|
X11SuspendScreenSaver(Connection, 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
continue;
|
continue;
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
} else if (!DPMSDisabled) { // always disable
|
||||||
|
Debug(3, "DPMS disabled");
|
||||||
|
X11DPMSDisable(Connection);
|
||||||
|
X11SuspendScreenSaver(Connection, 0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
surface = decoder->SurfacesRb[decoder->SurfaceRead];
|
surface = decoder->SurfacesRb[decoder->SurfaceRead];
|
||||||
@ -8605,8 +8630,21 @@ static void VdpauDisplayFrame(void)
|
|||||||
|| decoder->Closing < -300) {
|
|| decoder->Closing < -300) {
|
||||||
VdpauBlackSurface(decoder);
|
VdpauBlackSurface(decoder);
|
||||||
VdpauMessage(3, "video/vdpau: black surface displayed\n");
|
VdpauMessage(3, "video/vdpau: black surface displayed\n");
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
if (EnableDPMSatBlackScreen && DPMSDisabled) {
|
||||||
|
VdpauMessage(3, "Black surface, DPMS enabled\n");
|
||||||
|
X11DPMSReenable(Connection);
|
||||||
|
X11SuspendScreenSaver(Connection, 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
#ifdef USE_SCREENSAVER
|
||||||
|
} else if (!DPMSDisabled) { // always disable
|
||||||
|
VdpauMessage(3, "DPMS disabled\n");
|
||||||
|
X11DPMSDisable(Connection);
|
||||||
|
X11SuspendScreenSaver(Connection, 0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
VdpauMixVideo(decoder, i);
|
VdpauMixVideo(decoder, i);
|
||||||
@ -10572,8 +10610,6 @@ void VideoGetVideoSize(VideoHwDecoder * hw_decoder, int *width, int *height,
|
|||||||
// DPMS / Screensaver
|
// DPMS / Screensaver
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
static char DPMSDisabled; ///< flag we have disabled dpms
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Suspend X11 screen saver.
|
/// Suspend X11 screen saver.
|
||||||
///
|
///
|
||||||
@ -10664,11 +10700,11 @@ static void X11DPMSDisable(xcb_connection_t * connection)
|
|||||||
if (reply) {
|
if (reply) {
|
||||||
if (reply->state) {
|
if (reply->state) {
|
||||||
Debug(3, "video: dpms was enabled\n");
|
Debug(3, "video: dpms was enabled\n");
|
||||||
DPMSDisabled = 1;
|
|
||||||
xcb_dpms_disable(connection); // monitor powersave off
|
xcb_dpms_disable(connection); // monitor powersave off
|
||||||
}
|
}
|
||||||
free(reply);
|
free(reply);
|
||||||
}
|
}
|
||||||
|
DPMSDisabled = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11303,6 +11339,16 @@ void VideoSetAutoCrop(int interval, int delay, int tolerance)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Set EnableDPMSatBlackScreen
|
||||||
|
///
|
||||||
|
/// Currently this only choose the driver.
|
||||||
|
///
|
||||||
|
void SetDPMSatBlackScreen(int enable)
|
||||||
|
{
|
||||||
|
EnableDPMSatBlackScreen = enable;
|
||||||
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Raise video window.
|
/// Raise video window.
|
||||||
///
|
///
|
||||||
|
7
video.h
7
video.h
@ -222,7 +222,10 @@ extern int VideoDecodeInput(VideoStream *);
|
|||||||
/// Get number of input buffers.
|
/// Get number of input buffers.
|
||||||
extern int VideoGetBuffers(const VideoStream *);
|
extern int VideoGetBuffers(const VideoStream *);
|
||||||
|
|
||||||
/// Raise the frontend window
|
/// Set DPMS at Blackscreen switch
|
||||||
extern int VideoRaiseWindow();
|
extern void SetDPMSatBlackScreen(int);
|
||||||
|
|
||||||
|
/// Raise the frontend window
|
||||||
|
extern int VideoRaiseWindow(void);
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
Loading…
Reference in New Issue
Block a user