#include "media/capture/video/tizen/camera.h"
#include "absl/types/optional.h"
+#include "base/synchronization/lock.h"
#include "media/base/tizen/logger/media_logger.h"
#include "media/base/video_transformation.h"
#include "media/camera.h"
}
bool Camera::StartPreview() {
+ base::AutoLock lock(preview_lock_);
+
if (preview_enabled_) {
return true;
}
}
bool Camera::StopPreview() {
+ base::AutoLock lock(preview_lock_);
+
if (!std::exchange(preview_enabled_, false)) {
return true;
}
void Camera::OnPreview(camera_preview_data_s* frame, void* user_data) {
Camera* thiz = reinterpret_cast<Camera*>(user_data);
+ base::AutoLock lock(thiz->preview_lock_);
+
if (thiz->preview_enabled_ && thiz->preview_cb_) {
thiz->preview_cb_.Run(frame, thiz->GetRotationOnPreviewThread().value_or(
VideoRotation::VIDEO_ROTATION_0));
#include "absl/types/optional.h"
#include "base/functional/callback.h"
+#include "base/synchronization/lock.h"
+#include "base/thread_annotations.h"
#include "media/base/video_transformation.h"
#include "media/base/video_types.h"
#include "media/capture/video_capture_types.h"
absl::optional<CameraSupportedFormats> supported_formats_ = absl::nullopt;
- bool preview_enabled_ = false;
+ base::Lock preview_lock_;
+ bool preview_enabled_ GUARDED_BY(preview_lock_) = false;
};
} // namespace media