From: pr.jung Date: Thu, 21 Feb 2019 08:47:42 +0000 (+0900) Subject: Initialize current vibration handle and priority when vibration is done X-Git-Tag: accepted/tizen/unified/20190313.075422~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=97153a8ef269c3590bd8926c26d3c9de242b36be;p=platform%2Fcore%2Fsystem%2Ffeedbackd.git Initialize current vibration handle and priority when vibration is done Change-Id: I26221add67c70cab7dc0e09948f03903d6060a4c Signed-off-by: pr.jung --- diff --git a/src/haptic/haptic.c b/src/haptic/haptic.c index d253225..fa030ea 100644 --- a/src/haptic/haptic.c +++ b/src/haptic/haptic.c @@ -751,6 +751,19 @@ exit: return g_variant_new("(i)", ret); } +static gboolean _cb(void *data) +{ + if (duration_timer) { + g_source_remove(duration_timer); + duration_timer = 0; + } + + cur_h_data.handle = INVALID_HANDLE; + cur_h_data.priority = PRIORITY_MIN; + + return G_SOURCE_REMOVE; +} + static void vibrate_monotone_idler_cb(void *data) { struct vibrate_monotone_info *vibrate_info; @@ -767,6 +780,11 @@ static void vibrate_monotone_idler_cb(void *data) return; } + if (duration_timer) { + g_source_remove(duration_timer); + duration_timer = 0; + } + cur_h_data.vibration_data = NULL; cur_h_data.handle = vibrate_info->handle; cur_h_data.level = vibrate_info->level; @@ -777,6 +795,8 @@ static void vibrate_monotone_idler_cb(void *data) ret = device_power_request_lock(POWER_LOCK_CPU, vibrate_info->duration); if (ret != DEVICE_ERROR_NONE) _E("Failed to request power lock"); + + duration_timer = g_timeout_add(vibrate_info->duration, _cb, NULL); h_ops->vibrate_monotone(cur_h_data.handle, vibrate_info->duration, cur_h_data.level, cur_h_data.priority); free(vibrate_info);