Me ocurre con cualquier compilador que al depurar mientras se está ejecutando DirectInput, todo se enlentece muchísimo, por lo que es desesperante escribir, manejar el ratón o hacer cualquier cosa. Cuando detengo el programa todo vuelve a la normalidad.
Antes pasaba solo durante los 2 primeros segundos después de llegar al punto de ruptura, pero ahora se queda así todo el rato y necesito solucionarlo porque no puedo depurar, solo alcanzar una opción con el ratón es un suplicio.
¿No le pasa a nadie esto?, a ver si alguien sabe porqué pasa, he probado a fijar el nivel cooperativo del DInput de diferentes maneras y todo sigue igual.
Me extrañaria mucho que la causa de tu problema fueran las DI. Las he usado desde la version 5 y no me ha pasado nunca eso que cuentas.
Me suena a que puede ser de que en el bucle principal de tu aplicacion no tengas puesto un pequeño Sleep para ceder algo de tiempo al sistema operativo.
¿Cualquier depurador no sera el visual c++ express? por que en ordenadores piii o anteriores la cosa va fatal, las di no tienen nada que ver por que yo las uso y depuro con el visual c++ 2005 .net y va bien.
Tengo comprobado que es de DInput, porque nunca he tenido este problema cuando no lo he usado, además, he estado investigandolo paso a paso y al iniciarlo empieza a hacer el fallo, voy a intentar solucionar a ver que hago mal.
Lo peor va a ser depurar con el depurador casi bloqueado, es como estar a oscuras y tener que buscar la linterna.
Por cierto en el bucle principal no uso sleep, no creo que sea malo, uso peekmessage, si se recibe un mensaje se despacha, y si no, se ejecuta la aplicación, siempre me fue bien así.
Cita de: "zupervaca"¿Cualquier depurador no sera el visual c++ express? por que en ordenadores piii o anteriores la cosa va fatal, las di no tienen nada que ver por que yo las uso y depuro con el visual c++ 2005 .net y va bien.
Sí, es el express, pero me pasa también en otros, y no es por falta de velocidad, tengo pc rápido. Es un fallo de bloqueo casi absoluto, con una décima de cada segundo para poder mover un poco el ratón o introducir un carácter, eso sí, lo hace de manera uniforme.
Solo pasa al depurar paso a paso o al alcanzar un break, si se da a continuar fluye normal todo aunque esté en modo debug.
Prueba con:
Inicio/Configuración/Panel de Control/DirectX
En la pestaña de DirectInput marca los 2 checkbox de abajo:
[ ] Emulate Keyboard [ ] Emulate Mouse
Saludos
No pude probar lo que me dijiste Malandrín, porque no tengo el sdk instalado.
Pero ya encontre el problema, al parecer es el método de dispositivo de entrada Acquire, que provoca el atasco al depurar, para solucionarlo hay que usar Unacquire.
El problema que tengo ahora es que no sé como "Unacquirirlos" al depurar. Podría situar esa llamada antes de cada breakpoint pero sería una chapuza. ¿hay una solución mejor?.
Yo tengo hago que mi clase raton y mouse funcionen como cajas negras y solo uso DirectInput en release, en debug uso GetAsyncKeyState y GetCursorPos (el API de Win32 vaya)... no se si tal como tienes el codigo estructurado es factible.
Tengo por costumbre aislar el código, por lo que sí que puedo recibir las entradas de otras formas, si no hay otro remedio haré lo que dices.
De todos modos dejo abierta la pregunta de si se puede hacer una llamada a una función justo antes de que se produzca cualquier parada por breakpoint o paso a paso, o si hay alguna forma de anular el "acquire".
gracias por la ayuda.