笔记本电脑关闭屏幕时的屏幕外显示?
我有一个冗长的数字运算过程,它利用了OpenGL离屏渲染的优势。这一切运作良好,但是当我去做三明治的时候,当我离开它自己工作时,我通常会发现它在我不在的时候坠毁了。
我能够确定崩溃发生的时刻非常接近我正在使用的笔记本电脑决定关闭屏幕以节约能源。崩溃本身就在NVIDIA dll内部,所以没有希望知道发生了什么。笔记本电脑关闭屏幕时的屏幕外显示?
显而易见的解决方案是关闭电源管理功能,将屏幕和视频卡关闭,但我正在寻找更方便用户的东西。 有没有办法做到这一点编程?
我知道有一个SETI @ home实现可以利用GPU处理。它如何保持显卡不进入休眠状态?
我不确定你在使用什么操作系统,但windows sends a message它即将进入新的电源状态。您可以监听它,然后开始在CPU上处理或拒绝请求进入低功耗状态。
是的,窗户。非常酷,谢谢! – shoosh 2008-12-26 21:08:59
对于遇到类似问题的Linux用户,我想补充一点,您可以使用DBUS API获得类似通知并禁止电源状态更改。在Python中的一个示例脚本,从链接采取抑制电源状态变化:
#!/usr/bin/python
import dbus
import time
bus = dbus.Bus(dbus.Bus.TYPE_SESSION)
devobj = bus.get_object('org.freedesktop.PowerManagement',
'/org/freedesktop/PowerManagement')
dev = dbus.Interface (devobj, "org.freedesktop.PowerManagement.Inhibit")
cookie = dev.Inhibit('Nautilus', 'Copying files from /media/SANVOL')
time.sleep(10)
dev.UnInhibit(cookie)
根据MSDN,有一个允许应用程序告诉Windows它仍在工作,该Windows不是应该去一个API睡觉或关闭显示器。
该功能被称为SetThreadExecutionState
(MSDN)。它适用于我,使用标志ES_SYSTEM_REQUIRED
和ES_CONTINUOUS
。
但是,请注意,使用此功能不会停止运行屏幕保护程序,如果屏幕保护程序也使用OpenGL(或Direct3D),这可能会干扰您的OpenGL应用程序。
关闭显示器*与启动屏幕保护程序不同。这是两个独立的设置。 -1 – 0xC0000022L 2012-10-03 12:58:10
为什么要标记这个?看起来像一个有效的问题。 +1来抵消懦弱的驱车。 – 2008-12-26 20:30:31