Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gnome-shell for openSUSE:Factory checked in at 2026-02-12 17:25:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnome-shell (Old) and /work/SRC/openSUSE:Factory/.gnome-shell.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-shell" Thu Feb 12 17:25:21 2026 rev:285 rq:1332482 version:49.4 Changes: -------- --- /work/SRC/openSUSE:Factory/gnome-shell/gnome-shell.changes 2026-02-03 21:25:49.494329982 +0100 +++ /work/SRC/openSUSE:Factory/.gnome-shell.new.1977/gnome-shell.changes 2026-02-12 17:25:33.590690588 +0100 @@ -1,0 +2,15 @@ +Tue Feb 10 23:01:22 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 49.4: + + Fix screen time tracking with idle inhibitors + + Do not recreate default folders after they were removed + + Fix tab focus behavior in quick settings menu + + Do not expose password text in IM pre-edits + + Plugged leak + + Misc. bug fixes and cleanups + + Updated translations. +- Update libgnome-volume-control (gvc) tarball following upstreams + changes. +- Following the above, drop 31.patch and 32.patch, merged upstream. + +------------------------------------------------------------------- Old: ---- 31.patch 32.patch gnome-shell-49.3.obscpio New: ---- gnome-shell-49.4.obscpio ----------(Old B)---------- Old: changes. - Following the above, drop 31.patch and 32.patch, merged upstream. Old: changes. - Following the above, drop 31.patch and 32.patch, merged upstream. ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-shell.spec ++++++ --- /var/tmp/diff_new_pack.7TSyNI/_old 2026-02-12 17:25:34.758740140 +0100 +++ /var/tmp/diff_new_pack.7TSyNI/_new 2026-02-12 17:25:34.762740310 +0100 @@ -21,7 +21,7 @@ %define mutter_req 49.0 Name: gnome-shell -Version: 49.3 +Version: 49.4 Release: 0 Summary: GNOME Shell # shew extension is LGPL 2.1; gnome-shell-extension-tool is GPL-3.0-or-later @@ -42,11 +42,6 @@ # PATCH-FEATURE-OPENSUSE -- Do not ask to launch gnome-tour; openSUSE handles the logic in opensuse-welcome-launcher Patch100: gnome-shell-no-gnome-tour.patch -# PATCH-FIX-UPSTREAM - High patch ID nummber, as it needs to be manually applied in the gvc submodule directory -Patch2000: https://gitlab.gnome.org/GNOME/libgnome-volume-control/-/merge_requests/31.patch -# PATCH-FIX-UPSTREAM 32.patch bsc#1257512, glgo#GNOME/libgnome-volume-control#39 [email protected] -- Fix duplicated new devices introduced by glgo#GNOME/libgnome-volume-control!31 -Patch2001: https://gitlab.gnome.org/GNOME/libgnome-volume-control/-/merge_requests/32.patch - ## NOTE: Keep SLE-only patches at bottom (starting on 1000). # PATCH-FEATURE-SLE gnome-shell-gdm-login-applet.patch fate#314545 [email protected] -- Add an applet on login UI to display suse icon, product name, hostname. Patch1001: gnome-shell-gdm-login-applet.patch @@ -188,17 +183,13 @@ pushd subprojects tar xf %{SOURCE1} mv libgnome-volume-control-0.gitmodule gvc -pushd gvc -%patch -P 2000 -p1 -%patch -P 2001 -p1 -popd tar xf %{SOURCE2} mv libshew-0.gitmodule libshew popd %autopatch -p1 -M 999 %if !0%{?is_opensuse} || 0%{?suse_version} <= 1600 -%autopatch -p1 -m 1000 -M 1999 +%autopatch -p1 -m 1000 %endif cp %{SOURCE100} data/theme/ ++++++ _service ++++++ --- /var/tmp/diff_new_pack.7TSyNI/_old 2026-02-12 17:25:34.810742347 +0100 +++ /var/tmp/diff_new_pack.7TSyNI/_new 2026-02-12 17:25:34.818742686 +0100 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/GNOME/gnome-shell.git</param> - <param name="revision">49.3</param> + <param name="revision">49.4</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> @@ -12,7 +12,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/GNOME/libgnome-volume-control.git</param> - <param name="revision">5f9768a2eac29c1ed56f1fbb449a77a3523683b6</param> + <param name="revision">664eba4c054ecc4a140f0ef01ae9297422b71fdc</param> <param name="versionformat">0.gitmodule</param> </service> <service name="obs_scm" mode="manual"> ++++++ gnome-shell-49.3.obscpio -> gnome-shell-49.4.obscpio ++++++ ++++ 13562 lines of diff (skipped) ++++++ gnome-shell.obsinfo ++++++ --- /var/tmp/diff_new_pack.7TSyNI/_old 2026-02-12 17:25:36.714823123 +0100 +++ /var/tmp/diff_new_pack.7TSyNI/_new 2026-02-12 17:25:36.726823633 +0100 @@ -1,5 +1,5 @@ name: gnome-shell -version: 49.3 -mtime: 1768994628 -commit: 6d168562aa00632bfed6caa17cd192e44767f8f1 +version: 49.4 +mtime: 1770743135 +commit: 5e7de8cff584c92823f4f721d0fbd3422605862d ++++++ libgnome-volume-control-0.gitmodule.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgnome-volume-control-0.gitmodule/gvc-mixer-control.c new/libgnome-volume-control-0.gitmodule/gvc-mixer-control.c --- old/libgnome-volume-control-0.gitmodule/gvc-mixer-control.c 2024-05-14 17:00:36.000000000 +0200 +++ new/libgnome-volume-control-0.gitmodule/gvc-mixer-control.c 2026-02-04 13:28:08.000000000 +0100 @@ -239,7 +239,6 @@ GvcMixerStream *stream) { GList *devices, *d; - gboolean is_network_stream; const GList *ports; GvcMixerUIDevice *ret; @@ -253,43 +252,43 @@ ret = NULL; ports = gvc_mixer_stream_get_ports (stream); - is_network_stream = (ports == NULL); for (d = devices; d != NULL; d = d->next) { GvcMixerUIDevice *device = d->data; guint stream_id = G_MAXUINT; + const GvcMixerStreamPort *port; g_object_get (G_OBJECT (device), "stream-id", &stream_id, NULL); - if (is_network_stream && - stream_id == gvc_mixer_stream_get_id (stream)) { - g_debug ("lookup device from stream - %s - it is a network_stream ", + if (stream_id != gvc_mixer_stream_get_id (stream)) + continue; + + if (ports == NULL) { + g_debug ("lookup-device-from-stream - %s - is portless ", gvc_mixer_ui_device_get_description (device)); ret = device; break; - } else if (!is_network_stream) { - const GvcMixerStreamPort *port; - port = gvc_mixer_stream_get_port (stream); - - if (stream_id == gvc_mixer_stream_get_id (stream) && - g_strcmp0 (gvc_mixer_ui_device_get_port (device), - port->port) == 0) { - g_debug ("lookup-device-from-stream found device: device description '%s', device port = '%s', device stream id %i AND stream port = '%s' stream id '%u' and stream description '%s'", - gvc_mixer_ui_device_get_description (device), - gvc_mixer_ui_device_get_port (device), - stream_id, - port->port, - gvc_mixer_stream_get_id (stream), - gvc_mixer_stream_get_description (stream)); - ret = device; - break; - } + } + + port = gvc_mixer_stream_get_port (stream); + if (g_strcmp0 (gvc_mixer_ui_device_get_port (device), port->port) == 0) { + g_debug ("lookup-device-from-stream found device: device description '%s', device port = '%s', device stream id %i AND stream port = '%s' stream id '%u' and stream description '%s'", + gvc_mixer_ui_device_get_description (device), + gvc_mixer_ui_device_get_port (device), + stream_id, + port->port, + gvc_mixer_stream_get_id (stream), + gvc_mixer_stream_get_description (stream)); + ret = device; + break; + } } - g_debug ("gvc_mixer_control_lookup_device_from_stream - Could not find a device for stream '%s'",gvc_mixer_stream_get_description (stream)); + if (!ret) + g_debug ("lookup-device-from-stream - Could not find a device for stream '%s'", gvc_mixer_stream_get_description (stream)); g_list_free (devices); @@ -340,7 +339,6 @@ gvc_mixer_control_set_default_source (GvcMixerControl *control, GvcMixerStream *stream) { - GvcMixerUIDevice* input; pa_operation *o; g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE); @@ -372,13 +370,6 @@ pa_operation_unref (o); - /* source change successful, update the UI. */ - input = gvc_mixer_control_lookup_device_from_stream (control, stream); - g_signal_emit (G_OBJECT (control), - signals[ACTIVE_INPUT_UPDATE], - 0, - gvc_mixer_ui_device_get_id (input)); - return TRUE; } @@ -532,7 +523,7 @@ * @profile: (allow-none): Can be %NULL if any profile present on this port is okay * * Returns: This method will attempt to swap the profile on the card of - * the device with given profile name. If successfull it will set the + * the device with given profile name. If successful it will set the * preferred profile on that device so as we know the next time the user * moves to that device it should have this profile active. */ @@ -584,7 +575,7 @@ * - Firstly it queries the stream from the device. * - It assumes that if the stream is null that it cannot be a bluetooth or network stream (they never show unless they have valid sinks and sources) * In the scenario of a NULL stream on the device - * - It fetches the device's preferred profile or if NUll the profile with the highest priority on that device. + * - It fetches the device's preferred profile or if NULL the profile with the highest priority on that device. * - It then caches this device in control->priv->cached_desired_output_id so that when the update_sink triggered * from when we attempt to change profile we will know exactly what device to highlight on that stream. * - It attempts to swap the profile on the card from that device and returns. @@ -616,14 +607,7 @@ if (!gvc_mixer_ui_device_has_ports (output)) { g_debug ("Did we try to move to a software/bluetooth sink ?"); - if (gvc_mixer_control_set_default_sink (control, stream)) { - /* sink change was successful, update the UI.*/ - g_signal_emit (G_OBJECT (control), - signals[ACTIVE_OUTPUT_UPDATE], - 0, - gvc_mixer_ui_device_get_id (output)); - } - else { + if (!gvc_mixer_control_set_default_sink (control, stream)) { g_warning ("Failed to set default sink with stream from output %s", gvc_mixer_ui_device_get_description (output)); } @@ -645,23 +629,11 @@ /* Finally if we are not on the correct stream, swap over. */ if (stream != default_stream) { - GvcMixerUIDevice* device; - g_debug ("Attempting to swap over to stream %s ", gvc_mixer_stream_get_description (stream)); - if (gvc_mixer_control_set_default_sink (control, stream)) { - device = gvc_mixer_control_lookup_device_from_stream (control, stream); - g_signal_emit (G_OBJECT (control), - signals[ACTIVE_OUTPUT_UPDATE], - 0, - gvc_mixer_ui_device_get_id (device)); - } else { - /* If the move failed for some reason reset the UI. */ - device = gvc_mixer_control_lookup_device_from_stream (control, default_stream); - g_signal_emit (G_OBJECT (control), - signals[ACTIVE_OUTPUT_UPDATE], - 0, - gvc_mixer_ui_device_get_id (device)); + if (!gvc_mixer_control_set_default_sink (control, stream)) { + g_warning ("Failed to set default sink from output %s", + gvc_mixer_ui_device_get_description (output)); } } } @@ -675,7 +647,7 @@ * - Firstly it queries the stream from the device. * - It assumes that if the stream is null that it cannot be a bluetooth or network stream (they never show unless they have valid sinks and sources) * In the scenario of a NULL stream on the device - * - It fetches the device's preferred profile or if NUll the profile with the highest priority on that device. + * - It fetches the device's preferred profile or if NULL the profile with the highest priority on that device. * - It then caches this device in control->priv->cached_desired_input_id so that when the update_source triggered * from when we attempt to change profile we will know exactly what device to highlight on that stream. * - It attempts to swap the profile on the card from that device and returns. @@ -729,7 +701,10 @@ if (stream != default_stream) { g_debug ("change-input - attempting to swap over to stream %s", gvc_mixer_stream_get_description (stream)); - gvc_mixer_control_set_default_source (control, stream); + if (!gvc_mixer_control_set_default_source (control, stream)) { + g_warning ("Failed to set default source from input %s", + gvc_mixer_ui_device_get_description (input)); + } } } @@ -1003,11 +978,14 @@ new_id); input = gvc_mixer_control_lookup_device_from_stream (control, stream); - - g_signal_emit (G_OBJECT (control), - signals[ACTIVE_INPUT_UPDATE], - 0, - gvc_mixer_ui_device_get_id (input)); + if (input) { + g_signal_emit (G_OBJECT (control), + signals[ACTIVE_INPUT_UPDATE], + 0, + gvc_mixer_ui_device_get_id (input)); + } else { + g_warning ("Can't find input for stream-id %d",new_id); + } } } @@ -1211,6 +1189,13 @@ g_object_unref (stream); } +/** + * add_stream: (skip) + * @control: The control to add the stream to + * @stream:(transfer full): The stream to add + * + * Add a stream to the hash table of all known streams + */ static void add_stream (GvcMixerControl *control, GvcMixerStream *stream) @@ -1235,7 +1220,7 @@ GvcMixerStreamPort *stream_port, GvcMixerStream *stream) { - GList *devices, *d; + g_autoptr (GList) devices = NULL; guint stream_card_id; guint stream_id; gboolean in_possession = FALSE; @@ -1245,12 +1230,12 @@ devices = g_hash_table_get_values (GVC_IS_MIXER_SOURCE (stream) ? control->priv->ui_inputs : control->priv->ui_outputs); - for (d = devices; d != NULL; d = d->next) { + for (GList *d = devices; d != NULL; d = d->next) { GvcMixerUIDevice *device; guint device_stream_id; - gchar *device_port_name; - gchar *origin; - gchar *description; + g_autofree gchar *device_port_name = NULL; + g_autofree gchar *origin = NULL; + g_autofree gchar *description = NULL; GvcMixerCard *card; guint card_id; @@ -1280,33 +1265,63 @@ stream_port->port, stream_card_id); - if (stream_card_id == card_id && - g_strcmp0 (device_port_name, stream_port->port) == 0) { - g_debug ("Match device with stream: We have a match with description: '%s', origin: '%s', cached already with device id %u, so set stream id to %i", - description, - origin, - gvc_mixer_ui_device_get_id (device), - stream_id); - - g_object_set (G_OBJECT (device), - "stream-id", stream_id, - NULL); - in_possession = TRUE; + if (stream_card_id == card_id) { + if (g_strcmp0 (device_port_name, stream_port->port) == 0) { + g_debug ("Match device with stream: We have a match with description: '%s', origin: '%s', cached already with device id %u, so set stream id to %i", + description, + origin, + gvc_mixer_ui_device_get_id (device), + stream_id); + + g_object_set (G_OBJECT (device), + "stream-id", stream_id, + NULL); + in_possession = TRUE; + } else { + /* Other UI devices on that card that match the stream can't be valid */ + if (device_stream_id == stream_id) { + g_object_set (G_OBJECT (device), + "stream-id", GVC_MIXER_UI_DEVICE_INVALID, + NULL); + g_debug ("Found another UI device for this stream: %d, resetting", stream_id); + } + } } } - - g_free (device_port_name); - g_free (origin); - g_free (description); - - if (in_possession == TRUE) - break; } - g_list_free (devices); return in_possession; } + +/* Clear stream-id from all UI devices that reference the stream that lost all ports */ +static void +clear_stream_from_devices (GvcMixerControl *control, + GvcMixerStream *stream) +{ + g_autoptr (GList) devices = NULL; + guint stream_id; + + stream_id = gvc_mixer_stream_get_id (stream); + devices = g_hash_table_get_values (GVC_IS_MIXER_SOURCE (stream) ? control->priv->ui_inputs : control->priv->ui_outputs); + + for (GList *d = devices; d != NULL; d = d->next) { + guint device_stream_id; + GvcMixerUIDevice *device = d->data; + + g_object_get (G_OBJECT (device), + "stream-id", &device_stream_id, + NULL); + + if (device_stream_id == stream_id) { + g_object_set (G_OBJECT (device), + "stream-id", GVC_MIXER_UI_DEVICE_INVALID, + NULL); + g_debug ("Clearing stream-id: %d", stream_id); + } + } +} + /* * This method attempts to match a sink or source with its relevant UI device. * GvcMixerStream can represent both a sink or source. @@ -1327,7 +1342,9 @@ */ static void sync_devices (GvcMixerControl *control, - GvcMixerStream* stream) + GvcMixerStream* stream, + gboolean is_new, + gboolean is_bluetooth) { /* Go through ports to see what outputs can be created. */ const GList *stream_ports; @@ -1336,7 +1353,12 @@ stream_ports = gvc_mixer_stream_get_ports (stream); - if (stream_ports == NULL) { + if (stream_ports == NULL && is_bluetooth) { + clear_stream_from_devices (control, stream); + return; + } + + if (stream_ports == NULL && is_new) { GvcMixerUIDevice *device; GObject *object; @@ -1352,7 +1374,7 @@ g_hash_table_insert (is_output ? control->priv->ui_outputs : control->priv->ui_inputs, GUINT_TO_POINTER (gvc_mixer_ui_device_get_id (device)), - g_object_ref (device)); + device); g_signal_emit (G_OBJECT (control), signals[is_output ? OUTPUT_ADDED : INPUT_ADDED], @@ -1447,6 +1469,20 @@ } } +static gboolean +is_bluetooth (const pa_proplist *proplist) +{ + const char *bus = pa_proplist_gets (proplist, "device.bus"); + + if (bus == NULL) + return FALSE; + + if (g_str_equal ("bluetooth", bus)) + return TRUE; + + return FALSE; +} + /* * Called when anything changes with a sink. */ @@ -1459,6 +1495,8 @@ pa_volume_t max_volume; GvcChannelMap *map; char map_buff[PA_CHANNEL_MAP_SNPRINT_MAX]; + GList *list = NULL; + gboolean is_bt; pa_channel_map_snprint (map_buff, PA_CHANNEL_MAP_SNPRINT_MAX, &info->channel_map); #if 1 @@ -1475,27 +1513,10 @@ GUINT_TO_POINTER (info->index)); if (stream == NULL) { - GList *list = NULL; - guint i; - map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map); stream = gvc_mixer_sink_new (control->priv->pa_context, info->index, map); - - for (i = 0; i < info->n_ports; i++) { - GvcMixerStreamPort *port; - - port = g_slice_new0 (GvcMixerStreamPort); - port->port = g_strdup (info->ports[i]->name); - port->human_port = g_strdup (info->ports[i]->description); - port->priority = info->ports[i]->priority; - port->available = info->ports[i]->available != PA_PORT_AVAILABLE_NO; - - list = g_list_prepend (list, port); - } - gvc_mixer_stream_set_ports (stream, list); - g_object_unref (map); is_new = TRUE; @@ -1505,6 +1526,19 @@ return; } + for (guint i = 0; i < info->n_ports; i++) { + GvcMixerStreamPort *port; + + port = g_slice_new0 (GvcMixerStreamPort); + port->port = g_strdup (info->ports[i]->name); + port->human_port = g_strdup (info->ports[i]->description); + port->priority = info->ports[i]->priority; + port->available = info->ports[i]->available != PA_PORT_AVAILABLE_NO; + + list = g_list_prepend (list, port); + } + gvc_mixer_stream_set_ports (stream, g_steal_pointer (&list)); + max_volume = pa_cvolume_max (&info->volume); gvc_mixer_stream_set_name (stream, info->name); gvc_mixer_stream_set_card_index (stream, info->card); @@ -1518,6 +1552,11 @@ gvc_mixer_stream_set_base_volume (stream, (guint32) info->base_volume); gvc_mixer_stream_set_state (stream, translate_pa_state (info->state)); + is_bt = is_bluetooth (info->proplist); + /* Sync devices as the port on the stream might have changed */ + if (!is_new) + sync_devices (control, stream, is_new, is_bt); + /* Messy I know but to set the port everytime regardless of whether it has changed will cost us a * port change notify signal which causes the frontend to resync. * Only update the UI when something has changed. */ @@ -1530,7 +1569,8 @@ if (active_port == NULL || g_strcmp0 (active_port->port, info->active_port->name) != 0) { g_debug ("update sink - apparently a port update"); - gvc_mixer_stream_set_port (stream, info->active_port->name); + if (!gvc_mixer_stream_set_port (stream, info->active_port->name)) + g_warning ("Port update to of %d '%s' failed", info->index, info->active_port->name); } } } @@ -1542,9 +1582,9 @@ GUINT_TO_POINTER (info->index), g_object_ref (stream)); add_stream (control, stream); - /* Always sink on a new stream to able to assign the right stream id + /* Always sync on a new stream to able to assign the right stream id * to the appropriate outputs (multiple potential outputs per stream). */ - sync_devices (control, stream); + sync_devices (control, stream, is_new, is_bt); } else { g_signal_emit (G_OBJECT (control), signals[STREAM_CHANGED], @@ -1584,6 +1624,7 @@ gvc_channel_map_volume_changed (map, &info->volume, FALSE); } + static void update_source (GvcMixerControl *control, const pa_source_info *info) @@ -1591,6 +1632,8 @@ GvcMixerStream *stream; gboolean is_new; pa_volume_t max_volume; + GList *list = NULL; + gboolean is_bt; #if 1 g_debug ("Updating source: index=%u name='%s' description='%s'", @@ -1609,26 +1652,12 @@ stream = g_hash_table_lookup (control->priv->sources, GUINT_TO_POINTER (info->index)); if (stream == NULL) { - GList *list = NULL; - guint i; GvcChannelMap *map; map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map); stream = gvc_mixer_source_new (control->priv->pa_context, info->index, map); - - for (i = 0; i < info->n_ports; i++) { - GvcMixerStreamPort *port; - - port = g_slice_new0 (GvcMixerStreamPort); - port->port = g_strdup (info->ports[i]->name); - port->human_port = g_strdup (info->ports[i]->description); - port->priority = info->ports[i]->priority; - list = g_list_prepend (list, port); - } - gvc_mixer_stream_set_ports (stream, list); - g_object_unref (map); is_new = TRUE; } else if (gvc_mixer_stream_is_running (stream)) { @@ -1637,6 +1666,17 @@ return; } + for (guint i = 0; i < info->n_ports; i++) { + GvcMixerStreamPort *port; + + port = g_slice_new0 (GvcMixerStreamPort); + port->port = g_strdup (info->ports[i]->name); + port->human_port = g_strdup (info->ports[i]->description); + port->priority = info->ports[i]->priority; + list = g_list_prepend (list, port); + } + gvc_mixer_stream_set_ports (stream, list); + max_volume = pa_cvolume_max (&info->volume); gvc_mixer_stream_set_name (stream, info->name); @@ -1650,6 +1690,11 @@ gvc_mixer_stream_set_base_volume (stream, (guint32) info->base_volume); g_debug ("update source"); + is_bt = is_bluetooth (info->proplist); + /* Sync devices as the port on the stream might have changed */ + if (!is_new) + sync_devices (control, stream, is_new, is_bt); + if (info->active_port != NULL) { if (is_new) gvc_mixer_stream_set_port (stream, info->active_port->name); @@ -1659,7 +1704,8 @@ if (active_port == NULL || g_strcmp0 (active_port->port, info->active_port->name) != 0) { g_debug ("update source - apparently a port update"); - gvc_mixer_stream_set_port (stream, info->active_port->name); + if (!gvc_mixer_stream_set_port (stream, info->active_port->name)) + g_warning ("Port update to of %d '%s' failed", info->index, info->active_port->name); } } } @@ -1669,7 +1715,7 @@ GUINT_TO_POINTER (info->index), g_object_ref (stream)); add_stream (control, stream); - sync_devices (control, stream); + sync_devices (control, stream, is_new, is_bt); } else { g_signal_emit (G_OBJECT (control), signals[STREAM_CHANGED], @@ -1919,9 +1965,9 @@ supported_profiles = g_list_append (supported_profiles, prof); } } - g_debug ("%i profiles supported on port %s", + g_debug ("%i profiles supported on port %s / %s", g_list_length (supported_profiles), - port->description); + port->description, port->name); return g_list_sort (supported_profiles, (GCompareFunc) gvc_mixer_card_profile_compare); } @@ -1971,7 +2017,7 @@ gvc_mixer_ui_device_get_id (uidevice)); } - g_debug ("update_ui_device_on_port_added, direction %u, description '%s', origin '%s', port available %i", + g_debug ("update_ui_device_on_port_added, direction %u, description '%s', origin '%s', port available %i", direction, port->human_port, gvc_mixer_card_get_name (card), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgnome-volume-control-0.gitmodule/gvc-mixer-stream.c new/libgnome-volume-control-0.gitmodule/gvc-mixer-stream.c --- old/libgnome-volume-control-0.gitmodule/gvc-mixer-stream.c 2024-05-14 17:00:36.000000000 +0200 +++ new/libgnome-volume-control-0.gitmodule/gvc-mixer-stream.c 2026-02-04 13:28:08.000000000 +0100 @@ -532,8 +532,6 @@ } } - g_assert_not_reached (); - return NULL; } @@ -626,9 +624,13 @@ GList *ports) { g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); - g_return_val_if_fail (stream->priv->ports == NULL, FALSE); - stream->priv->ports = g_list_sort (ports, (GCompareFunc) sort_ports); + if (stream->priv->ports) { + g_list_free_full (stream->priv->ports, (GDestroyNotify) free_port); + stream->priv->ports = NULL; + } + if (ports) + stream->priv->ports = g_list_sort (ports, (GCompareFunc) sort_ports); return TRUE; } ++++++ libgnome-volume-control.obsinfo ++++++ --- /var/tmp/diff_new_pack.7TSyNI/_old 2026-02-12 17:25:37.038836869 +0100 +++ /var/tmp/diff_new_pack.7TSyNI/_new 2026-02-12 17:25:37.050837378 +0100 @@ -1,5 +1,5 @@ name: libgnome-volume-control version: 0.gitmodule -mtime: 1715698836 -commit: 5f9768a2eac29c1ed56f1fbb449a77a3523683b6 +mtime: 1770208088 +commit: 664eba4c054ecc4a140f0ef01ae9297422b71fdc
