After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 749353 - GBinding does not connect to the detailed notify signal
GBinding does not connect to the detailed notify signal
Status: RESOLVED FIXED
Product: glib
Classification: Platform
Component: gobject
unspecified
Other Linux
: Normal normal
: ---
Assigned To: gtkdev
gtkdev
Depends on:
Blocks:
 
 
Reported: 2015-05-14 06:12 UTC by Garrett Regier
Modified: 2015-05-14 11:00 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Connect to the detailed notify signal in GBinding (4.78 KB, patch)
2015-05-14 06:13 UTC, Garrett Regier
committed Details | Review

Description Garrett Regier 2015-05-14 06:12:37 UTC
Because GBinding does not connect to the detailed notify signal the handlers get called for each and every emission of the signal.

This causes quite a few spurious calls, for example:
  Starting Builder and having it open to the project window: 379
  Opening a project and a few files: 2148
Comment 1 Garrett Regier 2015-05-14 06:13:17 UTC
Created attachment 303350 [details] [review]
Connect to the detailed notify signal in GBinding

This avoids the notify handler being called for each and every emitted notify.
Comment 2 Christian Hergert 2015-05-14 06:20:28 UTC
Since we intend to start using EggBindingSet (and therefore GBinding) a lot more heavily, it would be really nice to see this land in GObject.
Comment 3 Emmanuele Bassi (:ebassi) 2015-05-14 09:24:23 UTC
Review of attachment 303350 [details] [review]:

Looks good.

An alternative approach would be to have GObject update all the bindings inside dispatch_properties_changed() before emitting the ::notify signal for each and every GParamSpec in the queue, but that can be figured out later.
Comment 4 Garrett Regier 2015-05-14 11:00:33 UTC
This problem has been fixed in the unstable development version. The fix will be available in the next major software release. You may need to upgrade your Linux distribution to obtain that newer version.