From 9f728c77f9e8bfc75e76f2859f7fcae2347918e5 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Fri, 4 Oct 2024 18:20:10 +0200 Subject: [PATCH] MPRIS: use org.mpris.MediaPlayer2.app_id as bus_name The bus name must be unique per application. Also sandboxed applications are not allowed to use bus names without the application id. --- .../app/android_app_NotificationManager.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/api-impl-jni/app/android_app_NotificationManager.c b/src/api-impl-jni/app/android_app_NotificationManager.c index 145be2c8..792fbad4 100644 --- a/src/api-impl-jni/app/android_app_NotificationManager.c +++ b/src/api-impl-jni/app/android_app_NotificationManager.c @@ -171,14 +171,21 @@ JNIEXPORT void JNICALL Java_android_app_NotificationManager_nativeShowMPRIS(JNIE mpris = media_player2_skeleton_new(); g_signal_connect(mpris, "handle-raise", G_CALLBACK(on_media_player_handle_raise), NULL); } + const char *package_name = NULL; + const char *app_id = g_application_get_application_id(G_APPLICATION(gtk_window_get_application(window))); + if ((app_id == NULL || strcmp(app_id, "com.example.demo_application") == 0) && package_name_jstr) { + // fall back to package name + app_id = package_name = (*env)->GetStringUTFChars(env, package_name_jstr, NULL); + } if (!dbus_name_id) { - dbus_name_id = g_bus_own_name(G_BUS_TYPE_SESSION, MPRIS_BUS_NAME_PREFIX "ATL", G_BUS_NAME_OWNER_FLAGS_NONE, + gchar *bus_name = g_strdup_printf("%s%s", MPRIS_BUS_NAME_PREFIX, app_id); + dbus_name_id = g_bus_own_name(G_BUS_TYPE_SESSION, bus_name, G_BUS_NAME_OWNER_FLAGS_NONE, on_bus_acquired, NULL, NULL, mpris, NULL); + g_free(bus_name); } media_player2_set_can_raise(mpris, TRUE); - if (package_name_jstr) { - const char *package_name = (*env)->GetStringUTFChars(env, package_name_jstr, NULL); - media_player2_set_desktop_entry(mpris, package_name); + media_player2_set_desktop_entry(mpris, app_id); + if (package_name) { (*env)->ReleaseStringUTFChars(env, package_name_jstr, package_name); } if (identity_jstr) {