moved sleep prevention code for further abstraction, implemented macOS
This commit is contained in:
@@ -156,6 +156,10 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
list(APPEND OLIVE_LIBRARIES "-framework IOKit")
|
||||
endif()
|
||||
|
||||
# Generate Git hash
|
||||
set(PROJECT_LONG_VERSION ${PROJECT_VERSION})
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
|
||||
@@ -26,6 +26,8 @@ set(OLIVE_SOURCES
|
||||
widget/viewer/viewerdisplay.h
|
||||
widget/viewer/viewerplaybacktimer.cpp
|
||||
widget/viewer/viewerplaybacktimer.h
|
||||
widget/viewer/viewerpreventsleep.cpp
|
||||
widget/viewer/viewerpreventsleep.h
|
||||
widget/viewer/viewerqueue.h
|
||||
widget/viewer/viewersafemargininfo.h
|
||||
widget/viewer/viewersizer.cpp
|
||||
|
||||
@@ -30,10 +30,6 @@
|
||||
#include <QtMath>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "winbase.h"
|
||||
#endif
|
||||
|
||||
#include "audio/audiomanager.h"
|
||||
#include "common/clamp.h"
|
||||
#include "common/power.h"
|
||||
@@ -44,6 +40,7 @@
|
||||
#include "node/project/project.h"
|
||||
#include "render/rendermanager.h"
|
||||
#include "task/taskmanager.h"
|
||||
#include "viewerpreventsleep.h"
|
||||
#include "widget/menu/menu.h"
|
||||
#include "window/mainwindow/mainwindow.h"
|
||||
|
||||
@@ -707,9 +704,7 @@ void ViewerWidget::PlayInternal(int speed, bool in_to_out_only)
|
||||
}
|
||||
}
|
||||
// Force screen to stay awake
|
||||
#ifdef _WIN32
|
||||
SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_CONTINUOUS);
|
||||
#endif
|
||||
PreventSleep(true);
|
||||
}
|
||||
|
||||
void ViewerWidget::PauseInternal()
|
||||
@@ -752,9 +747,7 @@ void ViewerWidget::PauseInternal()
|
||||
prequeuing_audio_ = 0;
|
||||
|
||||
// Reset screen timeout timer
|
||||
#ifdef _WIN32
|
||||
SetThreadExecutionState(ES_CONTINUOUS);
|
||||
#endif
|
||||
PreventSleep(false);
|
||||
}
|
||||
|
||||
void ViewerWidget::PushScrubbedAudio()
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
#include "viewerpreventsleep.h"
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
#if defined(Q_OS_WINDOWS)
|
||||
#include <winbase.h>
|
||||
#elif defined(Q_OS_MAC)
|
||||
#include <IOKit/pwr_mgt/IOPMLib.h>
|
||||
#endif
|
||||
|
||||
namespace olive {
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
IOPMAssertionID assertionID = 0;
|
||||
#endif
|
||||
|
||||
void PreventSleep(bool on)
|
||||
{
|
||||
#if defined(Q_OS_WINDOWS)
|
||||
SetThreadExecutionState(on ? ES_DISPLAY_REQUIRED | ES_CONTINUOUS : ES_CONTINUOUS);
|
||||
#elif defined(Q_OS_MAC)
|
||||
if (on) {
|
||||
static const CFStringRef reasonForActivity = CFSTR("Video Playback");
|
||||
|
||||
IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
|
||||
kIOPMAssertionLevelOn, reasonForActivity, &assertionID);
|
||||
} else if (assertionID) {
|
||||
IOPMAssertionRelease(assertionID);
|
||||
assertionID = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef VIEWERPREVENTSLEEP_H
|
||||
#define VIEWERPREVENTSLEEP_H
|
||||
|
||||
namespace olive {
|
||||
|
||||
void PreventSleep(bool on);
|
||||
|
||||
}
|
||||
|
||||
#endif // VIEWERPREVENTSLEEP_H
|
||||
Reference in New Issue
Block a user