Update of /cvsroot/alsa/alsa-kernel/core/seq
In directory sc8-pr-cvs1:/tmp/cvs-serv4997

Modified Files:
        seq_clientmgr.c seq_ports.c seq_ports.h 
Log Message:
- added auto-timestamp mode for the port.
- increased the protocol version to 1.0.1.



Index: seq_clientmgr.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/seq/seq_clientmgr.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- seq_clientmgr.c     30 May 2003 13:58:32 -0000      1.22
+++ seq_clientmgr.c     25 Jul 2003 17:22:26 -0000      1.23
@@ -521,6 +521,32 @@
 
 
 /*
+ * rewrite the time-stamp of the event record with the curren time
+ * of the given queue.
+ * return non-zero if updated.
+ */
+static int update_timestamp_of_queue(snd_seq_event_t *event, int queue, int real_time)
+{
+       queue_t *q;
+
+       q = queueptr(queue);
+       if (! q)
+               return 0;
+       event->queue = queue;
+       event->flags &= ~SNDRV_SEQ_TIME_STAMP_MASK;
+       if (real_time) {
+               event->time.time = snd_seq_timer_get_cur_time(q->timer);
+               event->flags |= SNDRV_SEQ_TIME_STAMP_REAL;
+       } else {
+               event->time.tick = snd_seq_timer_get_cur_tick(q->timer);
+               event->flags |= SNDRV_SEQ_TIME_STAMP_TICK;
+       }
+       queuefree(q);
+       return 1;
+}
+
+
+/*
  * deliver an event to the specified destination.
  * if filter is non-zero, client filter bitmap is tested.
  *
@@ -551,6 +577,10 @@
                goto __skip;
        }
                
+       if (dest_port->timestamping)
+               update_timestamp_of_queue(event, dest_port->time_queue,
+                                         dest_port->time_real);
+
        /* expand the quoted event */
        if (event->type == SNDRV_SEQ_EVENT_KERNEL_QUOTE) {
                quoted = 1;
@@ -597,27 +627,6 @@
 }
 
 
-static void snd_seq_subs_update_event_header(subscribers_t *subs, snd_seq_event_t 
*event)
-{
-       if (subs->info.flags & SNDRV_SEQ_PORT_SUBS_TIMESTAMP) {
-               /* convert time according to flag with subscription */
-               queue_t *q;
-               q = queueptr(subs->info.queue);
-               if (q) {
-                       event->queue = subs->info.queue;
-                       event->flags &= ~SNDRV_SEQ_TIME_STAMP_MASK;
-                       if (subs->info.flags & SNDRV_SEQ_PORT_SUBS_TIME_REAL) {
-                               event->time.time = 
snd_seq_timer_get_cur_time(q->timer);
-                               event->flags |= SNDRV_SEQ_TIME_STAMP_REAL;
-                       } else {
-                               event->time.tick = 
snd_seq_timer_get_cur_tick(q->timer);
-                               event->flags |= SNDRV_SEQ_TIME_STAMP_TICK;
-                       }
-                       queuefree(q);
-               }
-       }
-}
-
 /*
  * send the event to all subscribers:
  */
@@ -647,7 +656,10 @@
        list_for_each(p, &grp->list_head) {
                subs = list_entry(p, subscribers_t, src_list);
                event->dest = subs->info.dest;
-               snd_seq_subs_update_event_header(subs, event);
+               if (subs->info.flags & SNDRV_SEQ_PORT_SUBS_TIMESTAMP)
+                       /* convert time according to flag with subscription */
+                       update_timestamp_of_queue(event, subs->info.queue,
+                                                 subs->info.flags & 
SNDRV_SEQ_PORT_SUBS_TIME_REAL);
                err = snd_seq_deliver_single_event(client, event,
                                                   0, atomic, hop);
                if (err < 0)

Index: seq_ports.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/seq/seq_ports.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- seq_ports.c 30 May 2003 12:28:33 -0000      1.14
+++ seq_ports.c 25 Jul 2003 17:22:26 -0000      1.15
@@ -352,6 +352,11 @@
        port->midi_voices = info->midi_voices;
        port->synth_voices = info->synth_voices;
 
+       /* timestamping */
+       port->timestamping = (info->flags & SNDRV_SEQ_PORT_FLG_TIMESTAMP) ? 1 : 0;
+       port->time_real = (info->flags & SNDRV_SEQ_PORT_FLG_TIME_REAL) ? 1 : 0;
+       port->time_queue = info->time_queue;
+
        return 0;
 }
 
@@ -378,6 +383,15 @@
        info->read_use = port->c_src.count;
        info->write_use = port->c_dest.count;
        
+       /* timestamping */
+       info->flags = 0;
+       if (port->timestamping) {
+               info->flags |= SNDRV_SEQ_PORT_FLG_TIMESTAMP;
+               if (port->time_real)
+                       info->flags |= SNDRV_SEQ_PORT_FLG_TIME_REAL;
+               info->time_queue = port->time_queue;
+       }
+
        return 0;
 }
 

Index: seq_ports.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/seq/seq_ports.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- seq_ports.h 28 Feb 2003 15:08:21 -0000      1.3
+++ seq_ports.h 25 Jul 2003 17:22:26 -0000      1.4
@@ -74,6 +74,9 @@
        void *private_data;
        unsigned int callback_all : 1;
        unsigned int closing : 1;
+       unsigned int timestamping: 1;
+       unsigned int time_real: 1;
+       int time_queue;
        
        /* capability, inport, output, sync */
        unsigned int capability;        /* port capability bits */



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to