Fix invalid UTF-8 charactor error in AVRCP track info 22/181122/1
authorAtul Rai <a.rai@samsung.com>
Fri, 8 Jun 2018 09:09:17 +0000 (14:39 +0530)
committerAtul Rai <a.rai@samsung.com>
Fri, 8 Jun 2018 09:09:17 +0000 (14:39 +0530)
Change-Id: I26c27ec1e7febb31569109ec4ada31b8f75fdfca
Signed-off-by: Atul Rai <a.rai@samsung.com>
bt-api/bt-event-handler.c
bt-service-adaptation/services/audio/avrcp/bt-service-avrcp-ctrl.c

index 7c56d5a..a997b44 100644 (file)
@@ -1640,24 +1640,23 @@ void __bt_avrcp_control_event_filter(GDBusConnection *connection,
                                event_info->cb, event_info->user_data);
        } else if (strcasecmp(signal_name, BT_MEDIA_TRACK_CHANGE) == 0) {
                media_metadata_attributes_t metadata;
-               const char *title;
-               const char *artist;
-               const char *album;
-               const char *genre;
+               GVariant *title = NULL;
+               GVariant *artist = NULL;
+               GVariant *album = NULL;
+               GVariant *genre = NULL;
+
                unsigned int total_tracks;
                unsigned int number;
                unsigned int duration;
 
-               g_variant_get(parameters, "(&s&s&s&suuu)", &title,
-                                               &artist, &album, &genre,
-                                               &total_tracks, &number,
-                                               &duration);
-               memset(&metadata, 0x00, sizeof(media_metadata_attributes_t));
+               g_variant_get(parameters, "(@ay@ay@ay@ayuuu)",
+                               &title, &artist, &album, &genre,
+                               &total_tracks, &number, &duration);
 
-               metadata.title = title;
-               metadata.artist = artist;
-               metadata.album = album;
-               metadata.genre = genre;
+               metadata.title = g_variant_get_bytestring(title);
+               metadata.artist = g_variant_get_bytestring(artist);
+               metadata.album = g_variant_get_bytestring(album);
+               metadata.genre = g_variant_get_bytestring(genre);
                metadata.total_tracks = total_tracks;
                metadata.number = number;
                metadata.duration = duration;
@@ -1665,6 +1664,11 @@ void __bt_avrcp_control_event_filter(GDBusConnection *connection,
                _bt_avrcp_event_cb(BLUETOOTH_EVENT_AVRCP_TRACK_CHANGED,
                                result, &metadata,
                                event_info->cb, event_info->user_data);
+
+               g_variant_unref(title);
+               g_variant_unref(artist);
+               g_variant_unref(album);
+               g_variant_unref(genre);
        }
 }
 
index e7222cc..4c280d2 100644 (file)
@@ -490,21 +490,34 @@ static void __bt_handle_avrcp_track_info_changed(event_avrcp_ct_media_info_t* me
        unsigned int total_track = 0;
        unsigned int track_number = 0;
        unsigned int playing_time = 0;
+       GVariant *title;
+       GVariant *artist;
+       GVariant *album;
+       GVariant *genre;
 
        BT_INFO("+");
 
        total_track = (unsigned int)(metadata->total_track);
        track_number = (unsigned int)(metadata->track_number);
        playing_time = (unsigned int)(metadata->playing_time);
+
+       title = g_variant_new_from_data((const GVariantType *)"ay",
+                       metadata->title_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+                       TRUE, NULL, NULL);
+       artist = g_variant_new_from_data((const GVariantType *)"ay",
+                       metadata->artist_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+                       TRUE, NULL, NULL);
+       album = g_variant_new_from_data((const GVariantType *)"ay",
+                       metadata->album_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+                       TRUE, NULL, NULL);
+       genre = g_variant_new_from_data((const GVariantType *)"ay",
+                       metadata->genre_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+                       TRUE, NULL, NULL);
+
        /* Send AVRCP Target player track info changed event to application*/
-       param = g_variant_new("(ssssuuu)",
-                       metadata->title_info,
-                       metadata->artist_info,
-                       metadata->album_info,
-                       metadata->genre_info,
-                       total_track,
-                       track_number,
-                       playing_time);
+       param = g_variant_new("(@ay@ay@ay@ayuuu)",
+                       title, artist, album, genre,
+                       total_track, track_number, playing_time);
 
        BT_INFO("Total_track: %u, track_number: %u, playing_time: %u",
                        total_track, track_number, playing_time);