muse_module_h module = (muse_module_h)user_data;
muse_recorder_handle_s *muse_recorder = NULL;
char value_key[KEY_LENGTH] = {'\0',};
- int set_value = -1;
- int get_value = 0;
+ int emit_value = -1;
int device_recording = 0;
int device_paused = 0;
+ int device_status = -1;
+ int current_state = 0;
+ static int device_state[MUSE_RECORDER_TYPE_NUM] = {0, 0}; /* 0:MUSE_RECORDER_TYPE_AUDIO, 1:MUSE_RECORDER_TYPE_VIDEO */
if (module == NULL) {
LOGE("NULL module");
g_mutex_lock(&g_recorder_device_state_lock);
- /* define key name */
+ /* make key name */
if (muse_recorder->type == MUSE_RECORDER_TYPE_AUDIO)
snprintf(value_key, KEY_LENGTH, "%s", RECORDER_DEVICE_STATE_KEY_AUDIO);
else
snprintf(value_key, KEY_LENGTH, "%s", RECORDER_DEVICE_STATE_KEY_VIDEO);
- /* get current state */
- muse_core_client_get_value(module, value_key, &get_value);
- device_recording = get_value >> 16;
- device_paused = 0x0000ffff & get_value;
+ /* get current status */
+ muse_core_client_get_value(module, value_key, &device_status);
+ device_recording = device_status >> 16;
+ device_paused = 0x0000ffff & device_status;
+
+ LOGD("get [%s] 0x%8x", value_key, device_status);
LOGD("previous RECORDING %d, PAUSED %d", device_recording, device_paused);
- /* adjust state */
+ /* adjust status */
if (current == RECORDER_STATE_RECORDING)
device_recording++;
else if (current == RECORDER_STATE_PAUSED)
LOGD("current RECORDING %d, PAUSED %d", device_recording, device_paused);
- /* make set value */
- set_value = device_recording << 16 | device_paused;
+ /* make new status */
+ device_status = device_recording << 16 | device_paused;
+
+ LOGD("set [%s] 0x%8x", value_key, device_status);
+
+ muse_core_client_set_value(module, value_key, device_status);
- LOGD("device[%s] state set : 0x%x", value_key, set_value);
+ /* check whether emit signal or not */
+ if (device_recording > 0)
+ current_state = RECORDER_DEVICE_STATE_RECORDING;
+ else if (device_paused > 0)
+ current_state = RECORDER_DEVICE_STATE_PAUSED;
+ else
+ current_state = RECORDER_DEVICE_STATE_IDLE;
- muse_core_client_set_value(module, value_key, set_value);
+ if (current_state != device_state[muse_recorder->type]) {
+ LOGD("old %d -> new %d", device_state[muse_recorder->type], current_state);
+
+ emit_value = muse_recorder->type << 16 | current_state;
+ device_state[muse_recorder->type] = current_state;
+ }
+
+ if (emit_value != -1) {
+ LOGD("recorder devce state change signal [0x8x]", emit_value);
+
+ legacy_recorder_emit_signal(muse_recorder->recorder_handle,
+ MM_CAMCORDER_DBUS_OBJECT,
+ MM_CAMCORDER_DBUS_INTERFACE_RECORDER,
+ MM_CAMCORDER_DBUS_SIGNAL_STATE_CHANGED,
+ emit_value);
+ }
g_mutex_unlock(&g_recorder_device_state_lock);
int device_paused = 0;
recorder_h recorder = NULL;
recorder_type_e recorder_type = RECORDER_TYPE_AUDIO;
- recorder_device_state_e get_device_state = RECORDER_DEVICE_STATE_NULL;
+ recorder_device_state_e get_device_state = RECORDER_DEVICE_STATE_IDLE;
muse_recorder_api_e api = MUSE_RECORDER_API_GET_DEVICE_STATE;
muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_IMMEDIATE;