#include <muse_camera.h>
#include <legacy_camera_internal.h>
-#define PREVIEW_CB_TYPE_USER 0x0000000F
-#define PREVIEW_CB_TYPE_EVAS 0x000000F0
+#define PREVIEW_CB_TYPE_USER 0x0000000F
+#define PREVIEW_CB_TYPE_EVAS 0x000000F0
+#define PREVIEW_CB_TYPE_MEDIA_PACKET 0x00000F00
#define CHECK_PREVIEW_CB(muse_camera, cb_type) ((muse_camera)->preview_cb_flag & cb_type)
#define SET_PREVIEW_CB_TYPE(muse_camera, cb_type) ((muse_camera)->preview_cb_flag |= cb_type)
muse_core_msg_free(send_message);
- /*LOGD("wait preview callback return message");*/
-
- if (!CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_EVAS) && send_ret > 0) {
+ if (stream->bo[0] && send_ret > 0 &&
+ CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_USER) &&
+ CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET)) {
gint64 end_time = g_get_monotonic_time() + G_TIME_SPAN_SECOND;
-
- if (!g_cond_wait_until(&muse_camera->preview_cb_cond, &muse_camera->preview_cb_lock, end_time)) {
+ if (!g_cond_wait_until(&muse_camera->preview_cb_cond, &muse_camera->preview_cb_lock, end_time))
LOGW("preview callback return message timeout");
- } else {
- /*LOGD("preview callback return message received");*/
- }
}
g_mutex_unlock(&muse_camera->preview_cb_lock);
ret = legacy_camera_set_media_packet_preview_cb(muse_camera->camera_handle,
(camera_preview_cb)_camera_dispatcher_preview_cb,
(void *)muse_camera->module);
+ if (ret == CAMERA_ERROR_NONE)
+ SET_PREVIEW_CB_TYPE(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET);
break;
case MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_CB:
+ UNSET_PREVIEW_CB_TYPE(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET);
ret = legacy_camera_unset_media_packet_preview_cb(muse_camera->camera_handle);
break;
default: