• Milan Crha's avatar
    Ignore false GObject property change notifications · 2f3fbdd6
    Milan Crha authored
    This is related to bug 698275, which did not cover all cases.
    The problem here is that the dconf can in certain situation claim
    that everything changed (path "/" changed), which GSettingsBinding
    propagates to a GObject property unconditionally and GObject's
    property setter (g_object_set_property()) also notifies about
    the property change unconditionally, despite the real descendant
    property setter properly checks for the value change. After all
    these false notifications a callback on "notify" signal is called
    and possibly an expensive operation is run.
    
    Checking whether the value really changed helps in performance, for
    which were added new e-util functions:
       e_signal_connect_notify()
       e_signal_connect_notify_after()
       e_signal_connect_notify_swapped()
       e_signal_connect_notify_object()
    which have the same prototype as their GLib counterparts, but they allow
    only "notify::..." signals and they test whether the value really changed
    before they call the registered callback.
    2f3fbdd6
e-mail-session.c 63.4 KB