Author Topic: Arrastrar diálogos en máquinas "lentas"  (Read 5107 times)

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Arrastrar diálogos en máquinas "lentas"
« on: 2007 August 22 17:35:34 »
Buenas,

Este cacharro que estoy usando ahora va a 1300 MHz, un solo procesata. Estos días PixInsight me va bastante lento y no sé bien por qué, quizá es por un vmware que tengo por ahí pero éste raramente se lleva más del 15% de CPU...

Bueno, el tema es que la lentitud es tal que al desplazar el puntero sobre una imagen, se ve como la flecha va a saltos. Si muevo la flecha rápido, estos saltos pueden ser de 200 píxels o más. El problema viene poque al arrastrar los interfaces de los procesos (me ha pasado con STF y DBE) muy rápido, es posible soltar el botón del ratón en un momento en que la flecha se encuentra fuera de la barra de título del interface, dado que éste se mueve con retraso respecto de la flecha.

El bug consiste en que, después de soltar el botón del ratón (y si coincide en que lo hemos soltado en el momento descrito), todo parece normal pero cuando la flecha entra de nuevo en la barra de título del interface, éste actúa como si todavía estuviéramos arrastrándolo. Si hacemos un movimiento rápido de forma que la flecha "salte", el interface deja de moverse pero al volver a meter la flecha en la barra de título, vuelve a moverse. Para salir de este estado, basta un simple clic en la barra de título del interface (supongo que realmente aquí lo que cuenta no es press+release, sino sólo el release).

No sé por qué, pero sospecho que el bug está en Qt...

Supongo que reproducirlo en algunos portátiles será más fácil, en concreto los que tengan la capacidad de "CPU throttling". Se le dice a la CPU que vaya más despacito y a probarrr!

Severidad: baja (voy a ser bueno... :^P).
--
 David Serrano

Offline C. Sonnenstein

  • PixInsight Addict
  • ***
  • Posts: 262
    • http://astrosurf.com/astro35mm
Arrastrar diálogos en máquinas "lentas"
« Reply #1 on: 2007 August 23 04:11:15 »
Hola David:

Actualmente trabajo con portátil AMD (2.0 Ghz, 512KB L2 cache) y 2GB DDR2 (support dual-channel) y esto que comentas me ha sucedido en algunas ocasiones y con versiones más antiguas. Realmente, cuando pinchas con el ratón sobre la barra de la ventana de la interface, deja de hacerlo.

Gracias por el aviso.

Salu2,
Carlos Sonnenstein

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Arrastrar diálogos en máquinas "lentas"
« Reply #2 on: 2007 August 23 05:55:01 »
Efectivamente, este problema ya lo conocía. Por lo que yo sé, sólo ocurre en X11, no en Windoze.

Ocurre también en máquinas muy rápidas, como un Core 2 Extreme (4 núcleos). El problema no tiene realmente nada que ver con la velocidad de proceso. Sin embargo, la lentitud de proceso lo agrava y lo presenta con más crudeza.

El problema está relacionado con el hecho de que X11 es un sistema asíncrono en relación a los eventos de usuario. Esto significa que por ejemplo tú pulsas un botón del ratón y el gestor de ventanas no garantiza el envío de un evento inmediatamente a la aplicación. Puede que sí o puede que no; el gestor es libre para comprimir eventos, o para retardar su envío si así puede optimizar sus propios recursos.

Windows, por el contrario, es un sistema síncrono. O sea, tonto. Es decir, que todo lo que ocurre lo vomita inmediatamente, sin ningún tipo de reflexión previa. Sin embargo, desde el punto de vista de un desarrollador, esto tiene la ventaja de que es muchísimo más fácil escribir rutinas (event handlers) que respondan a eventos de movimiento del cursor, de pulsación de botones, de teclas, etc. Simplemente sabes que todo lo que pase lo vas a recibir de forma inmediata. En X11 sabes que puede que no sea así (edito: por Murphy será así cuando presupongas que no lo será, y al revés).

Todo este rollazo es para tratar de explicar lo que está pasando y por qué se "engancha" la barra de título de una ventana con el movimiento del ratón: con toda probabilidad a la aplicación se le está escapando un evento release de ratón. El problema está en Qt casi con seguridad... más microcirugía  :roll:
Juan Conejero
PixInsight Development Team
http://pixinsight.com/