Add wxPowerResourceBlocker for power management.
Add functions to acquire/release power resources, preventing/allowing back the system to go to sleep or turn off the screen and a class wrapping them in a safe way. This patch implements the functions for MSW and OSX, adds documentation and updates the sample to demonstrate the new functionality. Closes #16413. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
47
Makefile.in
47
Makefile.in
@@ -883,6 +883,7 @@ ALL_BASE_SOURCES = \
|
||||
src/osx/carbon/utils.cpp \
|
||||
src/osx/carbon/uma.cpp \
|
||||
src/osx/cocoa/utils.mm \
|
||||
src/osx/cocoa/power.mm \
|
||||
src/msw/main.cpp \
|
||||
src/msw/volume.cpp \
|
||||
src/common/fs_inet.cpp \
|
||||
@@ -4519,7 +4520,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS = \
|
||||
monodll_dlmsw.o \
|
||||
monodll_evtloopconsole.o \
|
||||
monodll_msw_mimetype.o \
|
||||
monodll_power.o \
|
||||
monodll_msw_power.o \
|
||||
monodll_regconf.o \
|
||||
monodll_registry.o \
|
||||
monodll_msw_snglinst.o \
|
||||
@@ -4539,7 +4540,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS = \
|
||||
@COND_TOOLKIT_OSX_CARBON@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS \
|
||||
@COND_TOOLKIT_OSX_CARBON@ = monodll_carbon_utils.o monodll_uma.o
|
||||
@COND_TOOLKIT_OSX_COCOA@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS \
|
||||
@COND_TOOLKIT_OSX_COCOA@ = monodll_osx_cocoa_utils.o
|
||||
@COND_TOOLKIT_OSX_COCOA@ = monodll_osx_cocoa_utils.o monodll_cocoa_power.o
|
||||
@COND_PLATFORM_MACOSX_1@__NET_PLATFORM_SRC_OBJECTS \
|
||||
@COND_PLATFORM_MACOSX_1@ = monodll_socketiohandler.o monodll_sockunix.o \
|
||||
@COND_PLATFORM_MACOSX_1@ monodll_sockosx.o
|
||||
@@ -6867,7 +6868,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1 = \
|
||||
monolib_dlmsw.o \
|
||||
monolib_evtloopconsole.o \
|
||||
monolib_msw_mimetype.o \
|
||||
monolib_power.o \
|
||||
monolib_msw_power.o \
|
||||
monolib_regconf.o \
|
||||
monolib_registry.o \
|
||||
monolib_msw_snglinst.o \
|
||||
@@ -6887,7 +6888,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1 = \
|
||||
@COND_TOOLKIT_OSX_CARBON@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_1 \
|
||||
@COND_TOOLKIT_OSX_CARBON@ = monolib_carbon_utils.o monolib_uma.o
|
||||
@COND_TOOLKIT_OSX_COCOA@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_1 \
|
||||
@COND_TOOLKIT_OSX_COCOA@ = monolib_osx_cocoa_utils.o
|
||||
@COND_TOOLKIT_OSX_COCOA@ = monolib_osx_cocoa_utils.o monolib_cocoa_power.o
|
||||
@COND_PLATFORM_MACOSX_1@__NET_PLATFORM_SRC_OBJECTS_1 \
|
||||
@COND_PLATFORM_MACOSX_1@ = monolib_socketiohandler.o monolib_sockunix.o \
|
||||
@COND_PLATFORM_MACOSX_1@ monolib_sockosx.o
|
||||
@@ -9268,7 +9269,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2 = \
|
||||
basedll_dlmsw.o \
|
||||
basedll_evtloopconsole.o \
|
||||
basedll_msw_mimetype.o \
|
||||
basedll_power.o \
|
||||
basedll_msw_power.o \
|
||||
basedll_regconf.o \
|
||||
basedll_registry.o \
|
||||
basedll_msw_snglinst.o \
|
||||
@@ -9288,7 +9289,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2 = \
|
||||
@COND_TOOLKIT_OSX_CARBON@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_2 \
|
||||
@COND_TOOLKIT_OSX_CARBON@ = basedll_carbon_utils.o basedll_uma.o
|
||||
@COND_TOOLKIT_OSX_COCOA@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_2 \
|
||||
@COND_TOOLKIT_OSX_COCOA@ = basedll_cocoa_utils.o
|
||||
@COND_TOOLKIT_OSX_COCOA@ = basedll_cocoa_utils.o basedll_cocoa_power.o
|
||||
COND_MONOLITHIC_0_SHARED_0___baselib___depname = \
|
||||
$(LIBDIRNAME)/$(LIBPREFIX)wx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT)
|
||||
@COND_MONOLITHIC_0_SHARED_0@__baselib___depname = $(COND_MONOLITHIC_0_SHARED_0___baselib___depname)
|
||||
@@ -9356,7 +9357,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3 = \
|
||||
baselib_dlmsw.o \
|
||||
baselib_evtloopconsole.o \
|
||||
baselib_msw_mimetype.o \
|
||||
baselib_power.o \
|
||||
baselib_msw_power.o \
|
||||
baselib_regconf.o \
|
||||
baselib_registry.o \
|
||||
baselib_msw_snglinst.o \
|
||||
@@ -9376,7 +9377,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3 = \
|
||||
@COND_TOOLKIT_OSX_CARBON@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_3 \
|
||||
@COND_TOOLKIT_OSX_CARBON@ = baselib_carbon_utils.o baselib_uma.o
|
||||
@COND_TOOLKIT_OSX_COCOA@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_3 \
|
||||
@COND_TOOLKIT_OSX_COCOA@ = baselib_cocoa_utils.o
|
||||
@COND_TOOLKIT_OSX_COCOA@ = baselib_cocoa_utils.o baselib_cocoa_power.o
|
||||
@COND_SHARED_1@____wxbase_namedll_DEP = $(__basedll___depname)
|
||||
@COND_SHARED_0@____wxbase_namelib_DEP = $(__baselib___depname)
|
||||
COND_MONOLITHIC_0_SHARED_1___netdll___depname = \
|
||||
@@ -9548,7 +9549,7 @@ COND_USE_SOVERSOLARIS_1___coredll___so_symlinks_uninst_cmd = rm -f \
|
||||
@COND_TOOLKIT_OSX_CARBON@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_4 \
|
||||
@COND_TOOLKIT_OSX_CARBON@ = coredll_carbon_utils.o coredll_uma.o
|
||||
@COND_TOOLKIT_OSX_COCOA@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_4 \
|
||||
@COND_TOOLKIT_OSX_COCOA@ = coredll_osx_cocoa_utils.o
|
||||
@COND_TOOLKIT_OSX_COCOA@ = coredll_osx_cocoa_utils.o coredll_power.o
|
||||
COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 = \
|
||||
$(__LOWLEVEL_SRC_OBJECTS_4) \
|
||||
$(__PLATFORM_SRC_OBJECTS_8) \
|
||||
@@ -11317,7 +11318,7 @@ COND_MONOLITHIC_0_SHARED_0_USE_GUI_1___corelib___depname = \
|
||||
@COND_TOOLKIT_OSX_CARBON@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_5 \
|
||||
@COND_TOOLKIT_OSX_CARBON@ = corelib_carbon_utils.o corelib_uma.o
|
||||
@COND_TOOLKIT_OSX_COCOA@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_5 \
|
||||
@COND_TOOLKIT_OSX_COCOA@ = corelib_osx_cocoa_utils.o
|
||||
@COND_TOOLKIT_OSX_COCOA@ = corelib_osx_cocoa_utils.o corelib_power.o
|
||||
COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 = \
|
||||
$(__LOWLEVEL_SRC_OBJECTS_6) \
|
||||
$(__PLATFORM_SRC_OBJECTS_9) \
|
||||
@@ -17552,7 +17553,7 @@ monodll_evtloopconsole.o: $(srcdir)/src/msw/evtloopconsole.cpp $(MONODLL_ODEP)
|
||||
monodll_msw_mimetype.o: $(srcdir)/src/msw/mimetype.cpp $(MONODLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/mimetype.cpp
|
||||
|
||||
monodll_power.o: $(srcdir)/src/msw/power.cpp $(MONODLL_ODEP)
|
||||
monodll_msw_power.o: $(srcdir)/src/msw/power.cpp $(MONODLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
monodll_regconf.o: $(srcdir)/src/msw/regconf.cpp $(MONODLL_ODEP)
|
||||
@@ -17642,6 +17643,9 @@ monodll_uma.o: $(srcdir)/src/osx/carbon/uma.cpp $(MONODLL_ODEP)
|
||||
monodll_osx_cocoa_utils.o: $(srcdir)/src/osx/cocoa/utils.mm $(MONODLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/utils.mm
|
||||
|
||||
monodll_cocoa_power.o: $(srcdir)/src/osx/cocoa/power.mm $(MONODLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/power.mm
|
||||
|
||||
monodll_fs_inet.o: $(srcdir)/src/common/fs_inet.cpp $(MONODLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fs_inet.cpp
|
||||
|
||||
@@ -23414,7 +23418,7 @@ monolib_evtloopconsole.o: $(srcdir)/src/msw/evtloopconsole.cpp $(MONOLIB_ODEP)
|
||||
monolib_msw_mimetype.o: $(srcdir)/src/msw/mimetype.cpp $(MONOLIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/mimetype.cpp
|
||||
|
||||
monolib_power.o: $(srcdir)/src/msw/power.cpp $(MONOLIB_ODEP)
|
||||
monolib_msw_power.o: $(srcdir)/src/msw/power.cpp $(MONOLIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
monolib_regconf.o: $(srcdir)/src/msw/regconf.cpp $(MONOLIB_ODEP)
|
||||
@@ -23504,6 +23508,9 @@ monolib_uma.o: $(srcdir)/src/osx/carbon/uma.cpp $(MONOLIB_ODEP)
|
||||
monolib_osx_cocoa_utils.o: $(srcdir)/src/osx/cocoa/utils.mm $(MONOLIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/utils.mm
|
||||
|
||||
monolib_cocoa_power.o: $(srcdir)/src/osx/cocoa/power.mm $(MONOLIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/power.mm
|
||||
|
||||
monolib_fs_inet.o: $(srcdir)/src/common/fs_inet.cpp $(MONOLIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fs_inet.cpp
|
||||
|
||||
@@ -29276,7 +29283,7 @@ basedll_evtloopconsole.o: $(srcdir)/src/msw/evtloopconsole.cpp $(BASEDLL_ODEP)
|
||||
basedll_msw_mimetype.o: $(srcdir)/src/msw/mimetype.cpp $(BASEDLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/msw/mimetype.cpp
|
||||
|
||||
basedll_power.o: $(srcdir)/src/msw/power.cpp $(BASEDLL_ODEP)
|
||||
basedll_msw_power.o: $(srcdir)/src/msw/power.cpp $(BASEDLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
basedll_regconf.o: $(srcdir)/src/msw/regconf.cpp $(BASEDLL_ODEP)
|
||||
@@ -29366,6 +29373,9 @@ basedll_uma.o: $(srcdir)/src/osx/carbon/uma.cpp $(BASEDLL_ODEP)
|
||||
basedll_cocoa_utils.o: $(srcdir)/src/osx/cocoa/utils.mm $(BASEDLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASEDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/utils.mm
|
||||
|
||||
basedll_cocoa_power.o: $(srcdir)/src/osx/cocoa/power.mm $(BASEDLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASEDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/power.mm
|
||||
|
||||
@COND_PLATFORM_UNIX_1@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
|
||||
@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
|
||||
|
||||
@@ -29753,7 +29763,7 @@ baselib_evtloopconsole.o: $(srcdir)/src/msw/evtloopconsole.cpp $(BASELIB_ODEP)
|
||||
baselib_msw_mimetype.o: $(srcdir)/src/msw/mimetype.cpp $(BASELIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/msw/mimetype.cpp
|
||||
|
||||
baselib_power.o: $(srcdir)/src/msw/power.cpp $(BASELIB_ODEP)
|
||||
baselib_msw_power.o: $(srcdir)/src/msw/power.cpp $(BASELIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
baselib_regconf.o: $(srcdir)/src/msw/regconf.cpp $(BASELIB_ODEP)
|
||||
@@ -29843,6 +29853,9 @@ baselib_uma.o: $(srcdir)/src/osx/carbon/uma.cpp $(BASELIB_ODEP)
|
||||
baselib_cocoa_utils.o: $(srcdir)/src/osx/cocoa/utils.mm $(BASELIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/utils.mm
|
||||
|
||||
baselib_cocoa_power.o: $(srcdir)/src/osx/cocoa/power.mm $(BASELIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(BASELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/power.mm
|
||||
|
||||
@COND_PLATFORM_UNIX_1@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
|
||||
@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
|
||||
|
||||
@@ -30080,6 +30093,9 @@ coredll_uma.o: $(srcdir)/src/osx/carbon/uma.cpp $(COREDLL_ODEP)
|
||||
coredll_osx_cocoa_utils.o: $(srcdir)/src/osx/cocoa/utils.mm $(COREDLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/utils.mm
|
||||
|
||||
coredll_power.o: $(srcdir)/src/osx/cocoa/power.mm $(COREDLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/power.mm
|
||||
|
||||
coredll_gtk1_bmpbuttn.o: $(srcdir)/src/gtk1/bmpbuttn.cpp $(COREDLL_ODEP)
|
||||
$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk1/bmpbuttn.cpp
|
||||
|
||||
@@ -34454,6 +34470,9 @@ corelib_uma.o: $(srcdir)/src/osx/carbon/uma.cpp $(CORELIB_ODEP)
|
||||
corelib_osx_cocoa_utils.o: $(srcdir)/src/osx/cocoa/utils.mm $(CORELIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/utils.mm
|
||||
|
||||
corelib_power.o: $(srcdir)/src/osx/cocoa/power.mm $(CORELIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/power.mm
|
||||
|
||||
corelib_gtk1_bmpbuttn.o: $(srcdir)/src/gtk1/bmpbuttn.cpp $(CORELIB_ODEP)
|
||||
$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk1/bmpbuttn.cpp
|
||||
|
||||
|
@@ -223,6 +223,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
||||
|
||||
<set var="BASE_AND_GUI_OSX_COCOA_SRC" hints="files">
|
||||
src/osx/cocoa/utils.mm
|
||||
src/osx/cocoa/power.mm
|
||||
</set>
|
||||
|
||||
<set var="BASE_AND_GUI_OSX_IPHONE_SRC" hints="files">
|
||||
|
@@ -165,6 +165,7 @@ BASE_AND_GUI_OSX_CARBON_SRC =
|
||||
|
||||
BASE_AND_GUI_OSX_COCOA_SRC =
|
||||
src/osx/cocoa/utils.mm
|
||||
src/osx/cocoa/power.mm
|
||||
|
||||
BASE_AND_GUI_OSX_IPHONE_SRC =
|
||||
src/osx/iphone/utils.mm
|
||||
|
@@ -1768,6 +1768,10 @@
|
||||
A1A7B833061C35B4AABD093C /* preferencesg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D8F06DEA1AA339ED819B3812 /* preferencesg.cpp */; };
|
||||
A1A7B833061C35B4AABD093D /* preferencesg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D8F06DEA1AA339ED819B3812 /* preferencesg.cpp */; };
|
||||
A1A7B833061C35B4AABD093E /* preferencesg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D8F06DEA1AA339ED819B3812 /* preferencesg.cpp */; };
|
||||
A1A7C58E276F6F2B247F0813 /* power.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0714536835B5227019E29D06 /* power.mm */; };
|
||||
A1A7C58E276F6F2B247F0814 /* power.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0714536835B5227019E29D06 /* power.mm */; };
|
||||
A1A7C58E276F6F2B247F0815 /* power.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0714536835B5227019E29D06 /* power.mm */; };
|
||||
A1A7C58E276F6F2B247F0816 /* power.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0714536835B5227019E29D06 /* power.mm */; };
|
||||
A1A7D793B034398B8696EF33 /* utils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 789F45D14FF23E248FCFB5FA /* utils.mm */; };
|
||||
A1A7D793B034398B8696EF34 /* utils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 789F45D14FF23E248FCFB5FA /* utils.mm */; };
|
||||
A1A7D793B034398B8696EF35 /* utils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 789F45D14FF23E248FCFB5FA /* utils.mm */; };
|
||||
@@ -4201,6 +4205,7 @@
|
||||
777385D10CCC350C90F02824 /* textentry_osx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = textentry_osx.cpp; path = ../../src/osx/textentry_osx.cpp; sourceTree = "<group>"; };
|
||||
77D6E66F72443765A2FBE263 /* aboutdlgg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = aboutdlgg.cpp; path = ../../src/generic/aboutdlgg.cpp; sourceTree = "<group>"; };
|
||||
77F5E7BCD9B2307D8DBCC052 /* font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = font.cpp; path = ../../src/osx/carbon/font.cpp; sourceTree = "<group>"; };
|
||||
0714536835B5227019E29D06 /* power.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = power.mm; path = ../../src/osx/cocoa/power.mm; sourceTree = "<group>"; };
|
||||
789F45D14FF23E248FCFB5FA /* utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = utils.mm; path = ../../src/osx/cocoa/utils.mm; sourceTree = "<group>"; };
|
||||
78D7866F95C73A28BB540606 /* LexBash.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LexBash.cxx; path = ../../src/stc/scintilla/lexers/LexBash.cxx; sourceTree = "<group>"; };
|
||||
7906BD74118A3B4DAC515BC2 /* odcombo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = odcombo.cpp; path = ../../src/generic/odcombo.cpp; sourceTree = "<group>"; };
|
||||
@@ -5943,6 +5948,7 @@
|
||||
C9A305CEC03B3085B159B617 /* fs_mem.cpp */,
|
||||
E968913A9A593B258BD8EACB /* msgout.cpp */,
|
||||
4188821BBA833CCAA678B234 /* utilscmn.cpp */,
|
||||
0714536835B5227019E29D06 /* power.mm */,
|
||||
789F45D14FF23E248FCFB5FA /* utils.mm */,
|
||||
);
|
||||
name = base;
|
||||
@@ -7343,6 +7349,7 @@
|
||||
131B879180AE3FB481F81CC9 /* fs_mem.cpp in Sources */,
|
||||
05814571E7A83F5DBFB6E4C6 /* msgout.cpp in Sources */,
|
||||
80665EEAE8613DF8A93A7986 /* utilscmn.cpp in Sources */,
|
||||
A1A7C58E276F6F2B247F0815 /* power.mm in Sources */,
|
||||
A1A7D793B034398B8696EF35 /* utils.mm in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -7375,6 +7382,7 @@
|
||||
131B879180AE3FB481F81CCA /* fs_mem.cpp in Sources */,
|
||||
05814571E7A83F5DBFB6E4C7 /* msgout.cpp in Sources */,
|
||||
80665EEAE8613DF8A93A7987 /* utilscmn.cpp in Sources */,
|
||||
A1A7C58E276F6F2B247F0816 /* power.mm in Sources */,
|
||||
A1A7D793B034398B8696EF36 /* utils.mm in Sources */,
|
||||
F4C0CEADEDC23610BF6983D8 /* artmac.cpp in Sources */,
|
||||
296692A7A3783E3A83D005C8 /* brush.cpp in Sources */,
|
||||
@@ -8040,6 +8048,7 @@
|
||||
131B879180AE3FB481F81CC8 /* fs_mem.cpp in Sources */,
|
||||
05814571E7A83F5DBFB6E4C5 /* msgout.cpp in Sources */,
|
||||
80665EEAE8613DF8A93A7985 /* utilscmn.cpp in Sources */,
|
||||
A1A7C58E276F6F2B247F0814 /* power.mm in Sources */,
|
||||
A1A7D793B034398B8696EF34 /* utils.mm in Sources */,
|
||||
F4C0CEADEDC23610BF6983D7 /* artmac.cpp in Sources */,
|
||||
296692A7A3783E3A83D005C7 /* brush.cpp in Sources */,
|
||||
@@ -9225,6 +9234,7 @@
|
||||
131B879180AE3FB481F81CC7 /* fs_mem.cpp in Sources */,
|
||||
05814571E7A83F5DBFB6E4C4 /* msgout.cpp in Sources */,
|
||||
80665EEAE8613DF8A93A7984 /* utilscmn.cpp in Sources */,
|
||||
A1A7C58E276F6F2B247F0813 /* power.mm in Sources */,
|
||||
A1A7D793B034398B8696EF33 /* utils.mm in Sources */,
|
||||
F4C0CEADEDC23610BF6983D6 /* artmac.cpp in Sources */,
|
||||
296692A7A3783E3A83D005C6 /* brush.cpp in Sources */,
|
||||
|
@@ -7517,7 +7517,7 @@ if test "$wxUSE_GUI" = "yes"; then
|
||||
|
||||
dnl TODO some samples are never built so far: mfc (requires VC++)
|
||||
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS artprov controls dialogs drawing \
|
||||
erase event exec font image minimal render \
|
||||
erase event exec font image minimal power render \
|
||||
shaped svg taborder vscroll widgets wrapsizer"
|
||||
|
||||
if test "$wxUSE_MONOLITHIC" != "yes"; then
|
||||
|
@@ -32,6 +32,7 @@ Changes in behaviour which may result in build errors
|
||||
|
||||
All:
|
||||
|
||||
- Add wxPowerResourceBlocker (Tobias Taschner).
|
||||
- Add wxApp::StoreCurrentException() and RethrowStoredException() and implement
|
||||
their functionality by default when using C++11 compiler.
|
||||
- Allow iterating over wxCmdLineParser arguments in order (Armel Asselin).
|
||||
|
@@ -95,6 +95,49 @@ typedef void (wxEvtHandler::*wxPowerEventFunction)(wxPowerEvent&);
|
||||
#undef wxHAS_POWER_EVENTS
|
||||
#endif // support for power events/no support
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxPowerResourceBlocker
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
enum wxPowerResourceKind
|
||||
{
|
||||
wxPOWER_RESOURCE_SCREEN,
|
||||
wxPOWER_RESOURCE_SYSTEM
|
||||
};
|
||||
|
||||
class WXDLLIMPEXP_BASE wxPowerResource
|
||||
{
|
||||
public:
|
||||
static bool Acquire(wxPowerResourceKind kind,
|
||||
const wxString& reason = wxString());
|
||||
static void Release(wxPowerResourceKind kind);
|
||||
};
|
||||
|
||||
class wxPowerResourceBlocker
|
||||
{
|
||||
public:
|
||||
explicit wxPowerResourceBlocker(wxPowerResourceKind kind,
|
||||
const wxString& reason = wxString())
|
||||
: m_kind(kind),
|
||||
m_acquired(wxPowerResource::Acquire(kind, reason))
|
||||
{
|
||||
}
|
||||
|
||||
bool IsInEffect() const { return m_acquired; }
|
||||
|
||||
~wxPowerResourceBlocker()
|
||||
{
|
||||
if ( m_acquired )
|
||||
wxPowerResource::Release(m_kind);
|
||||
}
|
||||
|
||||
private:
|
||||
const wxPowerResourceKind m_kind;
|
||||
const bool m_acquired;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxPowerResourceBlocker);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// power management functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -21,6 +21,19 @@ enum wxBatteryState
|
||||
wxBATTERY_UNKNOWN_STATE
|
||||
};
|
||||
|
||||
/**
|
||||
Possible power resources that can be locked by wxPowerResourceBlocker.
|
||||
|
||||
@since 3.1.0
|
||||
*/
|
||||
enum wxPowerResourceKind
|
||||
{
|
||||
/// Use to prevent automatic display power off.
|
||||
wxPOWER_RESOURCE_SCREEN,
|
||||
|
||||
/// Use to prevent automatic system suspend.
|
||||
wxPOWER_RESOURCE_SYSTEM
|
||||
};
|
||||
|
||||
/**
|
||||
@class wxPowerEvent
|
||||
@@ -38,6 +51,11 @@ enum wxBatteryState
|
||||
|
||||
@beginEventTable{wxPowerEvent}
|
||||
@event{EVT_POWER_SUSPENDING(func)}
|
||||
@warning This event and the possibility to veto suspend was removed
|
||||
from MSW systems starting from Windows Vista. wxPowerResourceBlocker
|
||||
can be used to prevent the system from suspending under both XP and
|
||||
later systems, use it instead of handling this event.
|
||||
|
||||
System is about to be suspended, this event can be vetoed to prevent
|
||||
suspend from taking place.
|
||||
@event{EVT_POWER_SUSPENDED(func)}
|
||||
@@ -80,4 +98,126 @@ wxEventType wxEVT_POWER_SUSPENDED;
|
||||
wxEventType wxEVT_POWER_SUSPEND_CANCEL;
|
||||
wxEventType wxEVT_POWER_RESUME;
|
||||
|
||||
/**
|
||||
Helper functions for acquiring and releasing the given power resource.
|
||||
|
||||
If an application performs a long running task without user interaction it
|
||||
is often necessary to prevent the system from automatically suspending or
|
||||
powering off the screen and Acquire() method can be used to do this.
|
||||
|
||||
Notice that currently this functionality is only implemented for MSW and
|
||||
OSX and on the latter only ::wxPOWER_RESOURCE_SYSTEM is supported for
|
||||
versions earlier than 10.9.
|
||||
|
||||
If possible, use wxPowerResourceBlocker class to ensure that Release() is
|
||||
called instead of calling it manually.
|
||||
|
||||
@since 3.1.0
|
||||
@library{wxbase}
|
||||
@category{misc}
|
||||
|
||||
@see wxPowerResourceBlocker
|
||||
*/
|
||||
class wxPowerResource
|
||||
{
|
||||
public:
|
||||
/**
|
||||
Acquire a power resource for the application.
|
||||
|
||||
If successful, the system will not automatically power of the screen or
|
||||
suspend until Release() is called.
|
||||
|
||||
Every call to Acquire @b must be matched by a corresponding call to
|
||||
Release() or the system will not suspend until the application ends, use
|
||||
wxPowerResourceBlocker to ensure that this happens.
|
||||
|
||||
@param kind Power resource required, either ::wxPOWER_RESOURCE_SCREEN
|
||||
or ::wxPOWER_RESOURCE_SYSTEM.
|
||||
@param reason Optional reason may be specified which might be used on
|
||||
some platforms to inform the user what is preventing power saving.
|
||||
It should usually describe the operation requiring the resource and
|
||||
specifying it is strongly recommended.
|
||||
@return Returns true if the acquisition was successful.
|
||||
|
||||
@see Release()
|
||||
*/
|
||||
static bool Acquire(wxPowerResourceKind kind,
|
||||
const wxString& reason = wxString());
|
||||
|
||||
/**
|
||||
Release a previously acquired power resource.
|
||||
|
||||
Release @b must be called for every Acquire() call made to restore
|
||||
normal power saving behaviour
|
||||
|
||||
@param kind Power resource to be released.
|
||||
|
||||
@see Acquire()
|
||||
*/
|
||||
static void Release(wxPowerResourceKind kind);
|
||||
};
|
||||
|
||||
/**
|
||||
Helper RAII class ensuring that power resources are released.
|
||||
|
||||
A wxPowerResourceBlocker object acquires a power resource in the
|
||||
constructor and releases it in the destructor making it impossible to to
|
||||
forget to release the power resource (which would prevent suspending or
|
||||
screen power off until the application ends).
|
||||
|
||||
Example:
|
||||
@code
|
||||
void MyWindow::DoSomething()
|
||||
{
|
||||
wxPowerResourceBlocker
|
||||
blocker(wxPOWER_RESOURCE_SYSTEM, "Downloading something important");
|
||||
|
||||
if ( !blocker.IsInEffect() )
|
||||
{
|
||||
// If the resource could not be acquired, tell the user that he has
|
||||
// to keep the system alive
|
||||
wxLogMessage("Warning: system may suspend while downloading.");
|
||||
}
|
||||
|
||||
// Run an important download and the system will not suspend while downloading
|
||||
for ( int i = 0; i < download.size(); ++i )
|
||||
download.readByte();
|
||||
|
||||
// wxPOWER_RESOURCE_SYSTEM automatically released here.
|
||||
}
|
||||
@endcode
|
||||
|
||||
@since 3.1.0
|
||||
@library{wxbase}
|
||||
@category{misc}
|
||||
|
||||
@see wxPowerResource
|
||||
*/
|
||||
class wxPowerResourceBlocker
|
||||
{
|
||||
public:
|
||||
/**
|
||||
Acquires the power resource.
|
||||
|
||||
Uses the same parameters as wxPowerResource::Acquire().
|
||||
*/
|
||||
explicit wxPowerResourceBlocker(wxPowerResourceKind kind,
|
||||
const wxString& reason = wxString());
|
||||
|
||||
/**
|
||||
Returns whether the power resource could be acquired.
|
||||
|
||||
This can be used to inform the user that the application will not
|
||||
prevent automatic suspending.
|
||||
|
||||
@see wxPowerResource::Acquire()
|
||||
*/
|
||||
bool IsInEffect() const;
|
||||
|
||||
/**
|
||||
Releases the power resource.
|
||||
|
||||
@see wxPowerResource::Release()
|
||||
*/
|
||||
~wxPowerResourceBlocker();
|
||||
};
|
||||
|
@@ -29,6 +29,8 @@
|
||||
|
||||
#include "wx/textctrl.h"
|
||||
#include "wx/msgdlg.h"
|
||||
#include "wx/menu.h"
|
||||
#include "wx/timer.h"
|
||||
|
||||
#include "wx/power.h"
|
||||
|
||||
@@ -47,6 +49,16 @@ public:
|
||||
: wxFrame(NULL, wxID_ANY, wxT("wxWidgets Power Management Sample"),
|
||||
wxDefaultPosition, wxSize(500, 200))
|
||||
{
|
||||
m_powerResourceBlocker = NULL;
|
||||
|
||||
wxMenu *fileMenu = new wxMenu;
|
||||
fileMenu->Append(wxID_NEW, "Start long running task\tCtrl-S");
|
||||
fileMenu->Append(wxID_ABORT, "Stop long running task");
|
||||
|
||||
wxMenuBar* menuBar = new wxMenuBar();
|
||||
menuBar->Append(fileMenu, wxT("&Task"));
|
||||
SetMenuBar(menuBar);
|
||||
|
||||
wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, wxT(""),
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxTE_MULTILINE | wxTE_READONLY);
|
||||
@@ -58,11 +70,20 @@ public:
|
||||
|
||||
UpdatePowerSettings(wxPOWER_UNKNOWN, wxBATTERY_UNKNOWN_STATE);
|
||||
|
||||
StopLongTask();
|
||||
Bind(wxEVT_COMMAND_MENU_SELECTED,
|
||||
&MyFrame::OnStartTaskClicked, this, wxID_NEW);
|
||||
Bind(wxEVT_COMMAND_MENU_SELECTED,
|
||||
&MyFrame::OnStopTaskClicked, this, wxID_ABORT);
|
||||
m_taskTimer.Bind(wxEVT_TIMER, &MyFrame::OnTaskTimer, this);
|
||||
|
||||
Show();
|
||||
}
|
||||
|
||||
virtual ~MyFrame()
|
||||
{
|
||||
delete m_powerResourceBlocker;
|
||||
|
||||
delete wxLog::SetActiveTarget(m_logOld);
|
||||
}
|
||||
|
||||
@@ -162,10 +183,67 @@ private:
|
||||
batteryStr.c_str()));
|
||||
}
|
||||
|
||||
void OnStartTaskClicked( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
wxLogMessage("Starting long running task "
|
||||
"(screen should keep powered on while running)...");
|
||||
StartLongTask();
|
||||
}
|
||||
|
||||
void OnStopTaskClicked(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
StopLongTask();
|
||||
wxLogMessage("Stopped long running task");
|
||||
}
|
||||
|
||||
void OnTaskTimer(wxTimerEvent& WXUNUSED(event))
|
||||
{
|
||||
++m_taskProgress;
|
||||
|
||||
if ( m_taskProgress == 100 )
|
||||
{
|
||||
StopLongTask();
|
||||
wxLogMessage("Long running task finished");
|
||||
}
|
||||
else
|
||||
{
|
||||
wxLogMessage("Long running task at %d%%...", m_taskProgress);
|
||||
}
|
||||
}
|
||||
|
||||
void StartLongTask()
|
||||
{
|
||||
m_taskProgress = 0;
|
||||
m_taskTimer.Start(12000);
|
||||
GetMenuBar()->Enable(wxID_NEW, false);
|
||||
GetMenuBar()->Enable(wxID_ABORT, true);
|
||||
|
||||
m_powerResourceBlocker
|
||||
= new wxPowerResourceBlocker(wxPOWER_RESOURCE_SYSTEM);
|
||||
|
||||
if ( !m_powerResourceBlocker->IsInEffect() )
|
||||
{
|
||||
wxLogMessage("Power resource could not be acquired, "
|
||||
"user input is required to prevent system standby");
|
||||
}
|
||||
}
|
||||
|
||||
void StopLongTask()
|
||||
{
|
||||
GetMenuBar()->Enable(wxID_NEW, true);
|
||||
GetMenuBar()->Enable(wxID_ABORT, false);
|
||||
m_taskTimer.Stop();
|
||||
|
||||
wxDELETE(m_powerResourceBlocker);
|
||||
}
|
||||
|
||||
wxPowerType m_powerType;
|
||||
wxBatteryState m_batteryState;
|
||||
|
||||
wxLog *m_logOld;
|
||||
wxTimer m_taskTimer;
|
||||
wxPowerResourceBlocker *m_powerResourceBlocker;
|
||||
int m_taskProgress;
|
||||
|
||||
wxDECLARE_EVENT_TABLE();
|
||||
};
|
||||
|
@@ -41,6 +41,23 @@
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxPowerEvent, wxEvent)
|
||||
#endif
|
||||
|
||||
// Provide stubs for systems without power resource management functions
|
||||
#if !defined(__WINDOWS__) && !defined(__APPLE__)
|
||||
|
||||
bool
|
||||
wxPowerResource::Acquire(wxPowerResourceKind kind,
|
||||
const wxString& WXUNUSED(reason))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void wxPowerResource::Release(wxPowerResourceKind kind)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif // !(__WINDOWS__ || __APPLE__)
|
||||
|
||||
// provide stubs for the systems not implementing these functions
|
||||
#if !defined(__WINDOWS__)
|
||||
|
||||
|
@@ -27,6 +27,7 @@
|
||||
#endif //WX_PRECOMP
|
||||
|
||||
#include "wx/power.h"
|
||||
#include "wx/atomic.h"
|
||||
#include "wx/msw/private.h"
|
||||
|
||||
#if !defined(__WINCE_STANDARDSDK__)
|
||||
@@ -39,6 +40,85 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxPowerResource
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
wxAtomicInt g_powerResourceScreenRefCount = 0;
|
||||
wxAtomicInt g_powerResourceSystemRefCount = 0;
|
||||
|
||||
bool UpdatePowerResourceExecutionState()
|
||||
{
|
||||
EXECUTION_STATE executionState = ES_CONTINUOUS;
|
||||
if ( g_powerResourceScreenRefCount > 0 )
|
||||
executionState |= ES_DISPLAY_REQUIRED;
|
||||
|
||||
if ( g_powerResourceSystemRefCount > 0 )
|
||||
executionState |= ES_SYSTEM_REQUIRED;
|
||||
|
||||
if ( ::SetThreadExecutionState(executionState) == NULL )
|
||||
{
|
||||
wxLogLastError(wxT("SetThreadExecutionState()"));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
bool
|
||||
wxPowerResource::Acquire(wxPowerResourceKind kind,
|
||||
const wxString& WXUNUSED(reason))
|
||||
{
|
||||
switch ( kind )
|
||||
{
|
||||
case wxPOWER_RESOURCE_SCREEN:
|
||||
wxAtomicInc(g_powerResourceScreenRefCount);
|
||||
break;
|
||||
|
||||
case wxPOWER_RESOURCE_SYSTEM:
|
||||
wxAtomicInc(g_powerResourceSystemRefCount);
|
||||
break;
|
||||
}
|
||||
|
||||
return UpdatePowerResourceExecutionState();
|
||||
}
|
||||
|
||||
void wxPowerResource::Release(wxPowerResourceKind kind)
|
||||
{
|
||||
switch ( kind )
|
||||
{
|
||||
case wxPOWER_RESOURCE_SCREEN:
|
||||
if ( g_powerResourceScreenRefCount > 0 )
|
||||
{
|
||||
wxAtomicDec(g_powerResourceScreenRefCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG( "Screen power resource was not acquired" );
|
||||
}
|
||||
break;
|
||||
|
||||
case wxPOWER_RESOURCE_SYSTEM:
|
||||
if ( g_powerResourceSystemRefCount > 0 )
|
||||
{
|
||||
wxAtomicDec(g_powerResourceSystemRefCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG( "System power resource was not acquired" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
UpdatePowerResourceExecutionState();
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// helper functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
129
src/osx/cocoa/power.mm
Normal file
129
src/osx/cocoa/power.mm
Normal file
@@ -0,0 +1,129 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/osx/cocoa/power.mm
|
||||
// Purpose: wxPowerResource implementation for OSX
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2014-08-09
|
||||
// Copyright: (c) wxWidgets team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#include "wx/power.h"
|
||||
#include "wx/atomic.h"
|
||||
#include "wx/osx/private.h"
|
||||
|
||||
#include <IOKit/pwr_mgt/IOPMLib.h>
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxPowerResource
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxAtomicInt g_powerResourceSystemRefCount = 0;
|
||||
|
||||
IOPMAssertionID g_pmAssertionID = 0;
|
||||
NSObject* g_processInfoActivity = nil;
|
||||
|
||||
bool UpdatePowerResourceUsage(wxPowerResourceKind kind, const wxString& reason)
|
||||
{
|
||||
if ( g_powerResourceSystemRefCount >= 1 )
|
||||
{
|
||||
wxCFStringRef cfreason(reason);
|
||||
if( reason.IsEmpty())
|
||||
cfreason = wxString("User Activity");
|
||||
|
||||
if ( UMAGetSystemVersion() >= 0x1090 )
|
||||
{
|
||||
// Use NSProcessInfo for 10.9 and newer
|
||||
if ( !g_processInfoActivity )
|
||||
{
|
||||
NSActivityOptions
|
||||
options = NSActivityUserInitiated |
|
||||
NSActivityIdleSystemSleepDisabled;
|
||||
|
||||
if ( kind == wxPOWER_RESOURCE_SCREEN )
|
||||
options |= NSActivityIdleDisplaySleepDisabled;
|
||||
|
||||
g_processInfoActivity = [[NSProcessInfo processInfo]
|
||||
beginActivityWithOptions:options
|
||||
reason:cfreason.AsNSString()];
|
||||
[g_processInfoActivity retain];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if ( !g_pmAssertionID )
|
||||
{
|
||||
// Use power manager API for < 10.9 systems
|
||||
IOReturn success = IOPMAssertionCreateWithName
|
||||
(
|
||||
kIOPMAssertionTypeNoIdleSleep,
|
||||
kIOPMAssertionLevelOn,
|
||||
cfreason,
|
||||
&g_pmAssertionID
|
||||
);
|
||||
if ( success == kIOReturnSuccess )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if ( g_powerResourceSystemRefCount == 0 )
|
||||
{
|
||||
// Release power assertion
|
||||
if ( UMAGetSystemVersion() >= 0x1090 )
|
||||
{
|
||||
// Use NSProcessInfo for 10.9 and newer
|
||||
if ( g_processInfoActivity )
|
||||
{
|
||||
[[NSProcessInfo processInfo]
|
||||
endActivity:(id)g_processInfoActivity];
|
||||
g_processInfoActivity = nil;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if ( g_pmAssertionID )
|
||||
{
|
||||
// Use power manager API for < 10.9 systems
|
||||
IOReturn success = IOPMAssertionRelease(g_pmAssertionID);
|
||||
g_pmAssertionID = 0;
|
||||
if (success == kIOReturnSuccess)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxPowerResource::Acquire(wxPowerResourceKind kind, const wxString& reason)
|
||||
{
|
||||
wxAtomicInc(g_powerResourceSystemRefCount);
|
||||
|
||||
bool success = UpdatePowerResourceUsage(kind, reason);
|
||||
if (!success)
|
||||
wxAtomicDec(g_powerResourceSystemRefCount);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
void wxPowerResource::Release(wxPowerResourceKind kind)
|
||||
{
|
||||
switch ( kind )
|
||||
{
|
||||
case wxPOWER_RESOURCE_SCREEN:
|
||||
case wxPOWER_RESOURCE_SYSTEM:
|
||||
if ( g_powerResourceSystemRefCount > 0 )
|
||||
{
|
||||
wxAtomicDec(g_powerResourceSystemRefCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG("Power resource was not acquired");
|
||||
}
|
||||
|
||||
UpdatePowerResourceUsage(kind, "");
|
||||
break;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user