Fix bug with handling multiple messages in one packet 32/221732/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Tue, 7 Jan 2020 06:59:06 +0000 (15:59 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Tue, 7 Jan 2020 06:59:13 +0000 (15:59 +0900)
Change-Id: I99b0818610d6596a953eefa94f343b5da872b619

client/ma_dbus.c

index 97cb7e29b09cd470fc7fcab10c0dd90395bb0180..128b945e80dd0566294a07d8fb61059c7d68209e 100644 (file)
@@ -86,7 +86,7 @@ static void message_port_cb(int local_port_id,
        memcpy(pending_buffer + pending_buffer_size, buffer, size);
        pending_buffer_size += size;
 
-       if (pending_buffer_size >= sizeof(streaming_data_header)) {
+       while (pending_buffer_size >= sizeof(streaming_data_header)) {
                streaming_data_header header;
                memcpy(&header, pending_buffer, sizeof(streaming_data_header));
                if (pending_buffer_size >= header.streaming_data_size) {
@@ -105,6 +105,9 @@ static void message_port_cb(int local_port_id,
                                __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;
                                memcpy(&streaming_section_header, pending_buffer + sizeof(streaming_data_header),
@@ -113,9 +116,11 @@ static void message_port_cb(int local_port_id,
                                __ma_cb_audio_streaming_data_section_changed(streaming_section_header.section);
                        }
 
-                       memmove(pending_buffer + header.streaming_data_size, pending_buffer,
+                       memmove(pending_buffer, pending_buffer + header.streaming_data_size,
                                sizeof(pending_buffer) - header.streaming_data_size);
                        pending_buffer_size -= header.streaming_data_size;
+               } else {
+                       break;
                }
        }
 }