Skip calling streaming callbacks for CONTINUE when stopped 46/222246/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Mon, 13 Jan 2020 02:22:34 +0000 (11:22 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Mon, 13 Jan 2020 02:23:55 +0000 (11:23 +0900)
Change-Id: I2e7ba96c415a82381e78dec789f4ef4f72cb94bc

client/ma_dbus.c

index 8e6c9ad51f86e12e9c19b6792e91d4e0fea25937..2bb657a789310bede60c3ba4e6e5ba36bd4dfacd 100644 (file)
@@ -29,6 +29,8 @@ static Ecore_Fd_Handler* g_fd_handler = NULL;
 static DBusConnection* g_conn_sender = NULL;
 static DBusConnection* g_conn_listener = NULL;
 
+static bool g_streaming_requested = false;
+
 extern int __ma_cb_error(int reason, char* msg);
 extern int __ma_cb_audio_streaming(int event, char* buffer, int len);
 extern int __ma_cb_active_state_changed(int state);
@@ -102,11 +104,16 @@ static void message_port_cb(int local_port_id,
                                memcpy(&audio_data_header, pending_buffer + sizeof(streaming_data_header),
                                        sizeof(streaming_data_audio_data_header));
 
-                               __ma_cb_audio_streaming(audio_data_header.event,
-                                       pending_buffer + sizeof(streaming_data_header) + sizeof(streaming_data_audio_data_header),
-                                       audio_data_header.data_size);
-                               if (0 == header.streaming_data_serial % 50) {
-                                       MA_SLOGI("__ma_cb_audio_streaming() called, serial : %d", header.streaming_data_serial);
+                               /* Don't invoke audio streaming callback for CONTINUE audio events
+                                       if the streaming request is no more valid, since it would not provide
+                                       any useful information to the client application */
+                               if (g_streaming_requested || MA_AUDIO_STREAMING_EVENT_CONTINUE != audio_data_header.event) {
+                                       __ma_cb_audio_streaming(audio_data_header.event,
+                                               pending_buffer + sizeof(streaming_data_header) + sizeof(streaming_data_audio_data_header),
+                                               audio_data_header.data_size);
+                                       if (0 == header.streaming_data_serial % 50) {
+                                               MA_SLOGI("__ma_cb_audio_streaming() called, serial : %d", header.streaming_data_serial);
+                                       }
                                }
                        } else if (streaming_data_type_streaming_section == header.streaming_data_type) {
                                streaming_data_streaming_section_header streaming_section_header;
@@ -1171,6 +1178,8 @@ int ma_dbus_start_streaming_audio_data(int pid, ma_audio_streaming_data_type_e t
 
        dbus_message_unref(msg);
 
+       g_streaming_requested = true;
+
        return 0;
 }
 
@@ -1219,6 +1228,8 @@ int ma_dbus_stop_streaming_audio_data(int pid, ma_audio_streaming_data_type_e ty
 
        dbus_message_unref(msg);
 
+       g_streaming_requested = false;
+
        return 0;
 }