@@ -545,47 +545,58 @@ static VCHIQ_STATUS_T shim_callback(VCHIQ_REASON_T reason,
545
545
SHIM_SERVICE_T * service =
546
546
(SHIM_SERVICE_T * )VCHIQ_GET_SERVICE_USERDATA (handle );
547
547
548
+ if (!service -> callback )
549
+ goto release ;
550
+
548
551
switch (reason ) {
549
552
case VCHIQ_MESSAGE_AVAILABLE :
550
553
vchiu_queue_push (& service -> queue , header );
551
554
552
- if (service -> callback )
553
- service -> callback (service -> callback_param ,
554
- VCHI_CALLBACK_MSG_AVAILABLE , NULL );
555
+ service -> callback (service -> callback_param ,
556
+ VCHI_CALLBACK_MSG_AVAILABLE , NULL );
557
+
558
+ goto done ;
555
559
break ;
560
+
556
561
case VCHIQ_BULK_TRANSMIT_DONE :
557
- if (service -> callback )
558
- service -> callback (service -> callback_param ,
559
- VCHI_CALLBACK_BULK_SENT , bulk_user );
562
+ service -> callback (service -> callback_param ,
563
+ VCHI_CALLBACK_BULK_SENT , bulk_user );
560
564
break ;
565
+
561
566
case VCHIQ_BULK_RECEIVE_DONE :
562
- if (service -> callback )
563
- service -> callback (service -> callback_param ,
564
- VCHI_CALLBACK_BULK_RECEIVED , bulk_user );
567
+ service -> callback (service -> callback_param ,
568
+ VCHI_CALLBACK_BULK_RECEIVED , bulk_user );
565
569
break ;
570
+
566
571
case VCHIQ_SERVICE_CLOSED :
567
- if (service -> callback )
568
- service -> callback (service -> callback_param ,
569
- VCHI_CALLBACK_SERVICE_CLOSED , NULL );
572
+ service -> callback (service -> callback_param ,
573
+ VCHI_CALLBACK_SERVICE_CLOSED , NULL );
570
574
break ;
575
+
571
576
case VCHIQ_SERVICE_OPENED :
572
577
/* No equivalent VCHI reason */
573
578
break ;
579
+
574
580
case VCHIQ_BULK_TRANSMIT_ABORTED :
575
- if ( service -> callback )
576
- service -> callback ( service -> callback_param ,
577
- VCHI_CALLBACK_BULK_TRANSMIT_ABORTED , bulk_user );
581
+ service -> callback ( service -> callback_param ,
582
+ VCHI_CALLBACK_BULK_TRANSMIT_ABORTED ,
583
+ bulk_user );
578
584
break ;
585
+
579
586
case VCHIQ_BULK_RECEIVE_ABORTED :
580
- if ( service -> callback )
581
- service -> callback ( service -> callback_param ,
582
- VCHI_CALLBACK_BULK_RECEIVE_ABORTED , bulk_user );
587
+ service -> callback ( service -> callback_param ,
588
+ VCHI_CALLBACK_BULK_RECEIVE_ABORTED ,
589
+ bulk_user );
583
590
break ;
591
+
584
592
default :
585
593
WARN (1 , "not supported\n" );
586
594
break ;
587
595
}
588
596
597
+ release :
598
+ vchiq_release_message (service -> handle , header );
599
+ done :
589
600
return VCHIQ_SUCCESS ;
590
601
}
591
602
0 commit comments