Re: [AD] EVDEV mouse driver

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


> I've made changes to the setup to be able to handle event mouse

Thanks. I have a few questions:

+   /* We try to open some of the most common devices. If at least on was
+    * opened, we continue detection */
+   retval = -1;
+   for (n=0; n<NUM_FD; n++) {
+     fd[n] = open(devices[n], O_RDONLY | O_NONBLOCK);
+     if (fd[n]!=-1) {
+       retval = 0;
+     }
+   }

You don't break on the first successful call to open: purposefully ?

+   /* Flush the files FIXME not alway flushed */
+   for (n=0; n<NUM_FD; n++) {
+      if (fd[n]!=-1) {
+         while (read(fd[n], buffer_array[n], PACKET_SIZE) > 0)
+            ;
+      }
    }

Could you explain the FIXME ?

+   for (count = 0; count < buffer_size; ) {
+      for (n=0; n<NUM_FD; n++) {
+         if (fd[n]!=-1) {
+            int c = read(fd[n], buffer_array[n]+count_array[n], 
PACKET_SIZE);
+            if (c>0) {
+               count_array[n] += c;
+               if (count_array[n]>count) {
+                  for ( ; count!=count_array[n]; count++) {
+                     vline(popup_bitmap2, l + count*w/buffer_size, t, b, 
gui_mg_color);
+                     blit(popup_bitmap2, screen, 0, 0, 0, 0, SCREEN_W, 
SCREEN_H);
+                  }
+               }
+            }
+         }

So acquiring is performed for each device...

+   buffer = NULL;
+   for (n=0; n<NUM_FD; n++) {
+      if (count_array[n]==count) {
+         buffer = buffer_array[n];
+      }
+   }

... and then only one record is kept ? What if this record isn't recognized 
by any driver, while another one would have been if it had been processed ?

> Also, the event mouse driver now try several device files by default.

Applied with modifications (lmseev2.diff).

> The device file names and packet size are hard coded in the setup. Is it
> better to specify them in the drivers ?

No, the setup program should be able to drive the autodetection process on 
its own.

> Some small fixes in setup.c: device file wasn't closed at the end of
> detect_mouse, drivers name aren't always initialized, correction in a
> message ("No drivers understand...").

Commited to both trunk and branch (setup.diff).

> I've also found that alert doesn't seem to scare the mouse. I didn't
> investigate.

I can't reproduce on my system (4.1.9 CVS w/ pthreads). Could you craft a 
minimal testcase that exhibits the problem ?

-- 
Eric Botcazou

Attachment: p.tar.gz
Description: application/tgz



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/