Fuera de la pantalla de representación cuando la computadora portátil se apaga la pantalla hacia abajo?

StackOverflow https://stackoverflow.com/questions/394227

Pregunta

Tengo un largo proceso de procesamiento de datos numéricos que se aprovecha de bastante un poco de OpenGL renderizado fuera de la pantalla. Todo funciona bien pero cuando lo dejo de trabajar por su cuenta mientras voy a hacer un sándwich normalmente encontraría que se estrelló mientras estaba fuera.
Yo era capaz de determinar que el accidente se produce muy cerca del momento en que el ordenador portátil que estoy usando decide apagar la pantalla para ahorrar energía. El accidente en sí es bien dentro de los archivos DLL NVIDIA lo que no hay esperanza de saber lo que está pasando.

La solución obvia es desactivar la función de administración de energía que apaga la tarjeta de la pantalla y el vídeo fuera, pero estoy buscando algo más fácil de usar. ¿Hay una manera de hacer esto mediante programación?
Sé que hay una aplicación de SETI @ home que se aprovecha de procesamiento de la GPU. ¿Cómo mantener la tarjeta de vídeo de ir a dormir?

¿Fue útil?

Solución

No estoy seguro de qué sistema operativo que está en, pero las ventanas envía una mensaje de que está a punto de entrar en un nuevo estado de energía. Se puede escuchar por eso y luego o bien iniciar el procesamiento de la CPU o negar la solicitud para entrar en un estado de bajo consumo.

Otros consejos

Para el beneficio de los usuarios de Linux encontrarse con un problema similar, pensé que me gustaría añadir que, se puede obtener notificaciones similares e inhibir los cambios de estado de energía mediante el dBUS API . Un script de ejemplo en Python, tomada desde el enlace, para inhibir el cambio de estado de energía:

#!/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)

De acuerdo con MSDN, hay una API que permite que una aplicación para que Windows todavía está trabajando y que Windows no debe ir a dormir o apagar la pantalla.

La función se llama SetThreadExecutionState ( MSDN ). Funciona para mí, utilizando el ES_SYSTEM_REQUIRED banderas y ES_CONTINUOUS.

Tenga en cuenta, sin embargo, que el uso de esta función no se detiene el protector de pantalla se ejecute, lo que podría interferir con su aplicación OpenGL si el protector de pantalla también se utiliza OpenGL (oder Direct3D).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top