+ else if( message->type == VLCObjectMethodWithArrayArg )
+ {
+ NSMutableArray * newArg = nil;
+ /* Collapse messages that takes array arg by sending one bigger array */
+ for( i = [[self messageQueue] count]-2; i >= 0; i-- )
+ {
+ message_newer = (struct message *)[(NSData *)[[self messageQueue] objectAtIndex: i] bytes];
+ if( message_newer->type == VLCObjectMethodWithArrayArg &&
+ message_newer->target == message->target &&
+ message_newer->sel == message->sel )
+ {
+ if(!newArg)
+ newArg = [NSMutableArray arrayWithArray: message->u.object];
+ [newArg addObjectsFromArray: message_newer->u.object];
+ [message_newer->target release];
+ [message_newer->u.object release];
+ [[self messageQueue] removeObjectAtIndex: i];
+ i++;
+ continue;
+ }
+ /* It should be a good idea not to collapse event, with other kind of event in-between
+ * Ignore for now only if target is the same */
+ else if( message_newer->target == message->target )
+ break;
+ }
+ if( newArg )
+ {
+ [message->u.object release];
+ message->u.object = [newArg retain];
+ [newArg retain];
+ }
+ }