static void undoInsertKey(void* userData) { struct InsertKeyData* data = (struct InsertKeyData*)userData; struct sync_track* t = s_syncTracks[data->track]; sync_del_key(t, data->key.row); RemoteConnection_sendDeleteKeyCommand(t->name, data->key.row); }
static void execDeleteKey(void* userData) { struct DeleteKeyData* data = (struct DeleteKeyData*)userData; struct sync_track* t = s_syncTracks[data->track]; int idx = sync_find_key(t, data->row); data->oldKey = t->keys[idx]; sync_del_key(t, data->row); RemoteConnection_sendDeleteKeyCommand(t->name, data->row); }
static int handle_del_key_cmd(SOCKET sock, struct sync_device *data) { uint32_t track, row; if (xrecv(sock, (char *)&track, sizeof(track), 0) || xrecv(sock, (char *)&row, sizeof(row), 0)) return -1; track = ntohl(track); row = ntohl(row); assert(track < data->num_tracks); return sync_del_key(data->tracks[track], row); }
static void toggleMute(void* userData) { struct MuteData* data = (struct MuteData*)userData; // if we have mute data we should toggle back the track to it's old form if (data->track->muteBackup) { int i; sync_del_key(data->syncTrack, 0); RemoteConnection_sendDeleteKeyCommand(data->syncTrack->name, 0); for (i = 0; i < data->track->muteKeyCount; ++i) { struct track_key* key = &data->track->muteBackup[i]; sync_set_key(data->syncTrack, key); RemoteConnection_sendSetKeyCommand(data->syncTrack->name, key); } data->track->disabled = false; free(data->track->muteBackup); data->track->muteBackup = 0; data->track->muteKeyCount = 0; } else { struct track_key defKey; int i; size_t keysSize = sizeof(struct track_key) * data->syncTrack->num_keys; float currentValue = (float)sync_get_val(data->syncTrack, data->row); data->track->disabled = true; // No muteBackup, this means that we want to mute the channel data->track->muteBackup = malloc(keysSize); data->track->muteKeyCount = data->syncTrack->num_keys; memcpy(data->track->muteBackup, data->syncTrack->keys, keysSize); for (i = 0; i < data->syncTrack->num_keys; ++i) { int row = data->track->muteBackup[i].row; sync_del_key(data->syncTrack, row); RemoteConnection_sendDeleteKeyCommand(data->syncTrack->name, row); } defKey.row = 0; defKey.value = currentValue; defKey.type = KEY_STEP; // insert key with the current value sync_set_key(data->syncTrack, &defKey); RemoteConnection_sendSetKeyCommand(data->syncTrack->name, &defKey); } }