Fix: Don't try to set a value if already set
authorDenis Kenzior <denkenz@gmail.com>
Tue, 29 Sep 2009 19:28:40 +0000 (14:28 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Tue, 29 Sep 2009 19:56:22 +0000 (14:56 -0500)
src/call-volume.c

index 95ed5d6..8d99c47 100644 (file)
@@ -244,6 +244,9 @@ static DBusMessage *cv_set_property(DBusConnection *conn, DBusMessage *msg,
                if (percent > 100)
                        return __ofono_error_invalid_format(msg);
 
+               if (percent == cv->speaker_volume)
+                       return dbus_message_new_method_return(msg);
+
                cv->pending_volume = percent;
                cv->pending = dbus_message_ref(msg);
                cv->driver->speaker_volume(cv, percent, sv_set_callback, cv);
@@ -263,6 +266,9 @@ static DBusMessage *cv_set_property(DBusConnection *conn, DBusMessage *msg,
                if (percent > 100)
                        return __ofono_error_invalid_format(msg);
 
+               if (percent == cv->microphone_volume)
+                       return dbus_message_new_method_return(msg);
+
                cv->pending_volume = percent;
                cv->pending = dbus_message_ref(msg);
                cv->driver->speaker_volume(cv, percent, mv_set_callback, cv);
@@ -279,6 +285,9 @@ static DBusMessage *cv_set_property(DBusConnection *conn, DBusMessage *msg,
 
                dbus_message_iter_get_basic(&var, &muted);
 
+               if (muted == cv->muted)
+                       return dbus_message_new_method_return(msg);
+
                cv->muted_pending = muted;
                cv->pending = dbus_message_ref(msg);
                cv->driver->mute(cv, muted, muted_set_callback, cv);