Index: chrome/browser/chromeos/login/camera.h |
diff --git a/chrome/browser/chromeos/login/camera.h b/chrome/browser/chromeos/login/camera.h |
index af70e62b36e27ad6663b752c6c6131de2d07ad76..a82f1978dd9c42c3e5620ae18907543541bf118f 100644 |
--- a/chrome/browser/chromeos/login/camera.h |
+++ b/chrome/browser/chromeos/login/camera.h |
@@ -16,7 +16,7 @@ |
class Task; |
namespace base { |
-class TimeDelta; |
+class Thread; |
} // namespace base |
namespace chromeos { |
@@ -49,9 +49,10 @@ class Camera : public base::RefCountedThreadSafe<Camera> { |
}; |
// Initializes object members. |delegate| is object that will receive |
- // notifications about success of async method calls. |mirrored| |
- // determines if the returned video image is mirrored horizontally. |
- Camera(Delegate* delegate, bool mirrored); |
+ // notifications about success of async method calls. |thread| is a thread |
+ // to post blocking tasks to. |mirrored| determines if the returned video |
+ // image is mirrored horizontally. |
+ Camera(Delegate* delegate, base::Thread* thread, bool mirrored); |
// Initializes camera device on camera thread. Corresponding delegate's |
// callback is called on UI thread to notify about success or failure. Does |
@@ -111,6 +112,8 @@ class Camera : public base::RefCountedThreadSafe<Camera> { |
// See the corresponding methods without Do prefix for details. |
void DoInitialize(int desired_width, int desired_height); |
void DoStartCapturing(); |
+ void DoUninitialize(); |
+ void DoStopCapturing(); |
// Helper method that reports failure to the delegate via method |
// corresponding to the current state of the object. |
@@ -124,22 +127,13 @@ class Camera : public base::RefCountedThreadSafe<Camera> { |
void OnCaptureSuccess(); |
void OnCaptureFailure(); |
- // Camera thread routines that implement the corresponding public methods. |
- void DoUninitialize(); |
- void DoStopCapturing(); |
- |
- // All methods on the camera thread need to call this to post back to the UI |
- // thread. Otherwise the camera object could be deleted on the camera thread |
- // which is not allowed. |
- void PostCameraThreadAck(); |
- void CameraThreadAck(); |
- |
// Returns true if the code is executed on camera thread right now, false |
// otherwise. |
bool IsOnCameraThread() const; |
// Posts task to camera thread. |
- void PostCameraTask(Task* task); |
+ void PostCameraTask(const tracked_objects::Location& from_here, |
+ Task* task); |
// Defines a buffer in memory where one frame from the camera is stored. |
struct VideoBuffer { |
@@ -152,7 +146,7 @@ class Camera : public base::RefCountedThreadSafe<Camera> { |
Delegate* delegate_; |
// Thread where all work with the device is going on. |
- base::Thread camera_thread_; |
+ base::Thread* thread_; |
// All the members below are accessed only on camera thread. |
// Name of the device file, i.e. "/dev/video0". |
@@ -187,10 +181,10 @@ class Camera : public base::RefCountedThreadSafe<Camera> { |
SkBitmap frame_image_; |
// Lock that guards references to |frame_image_|. |
- static Lock image_lock_; |
+ mutable Lock image_lock_; |
// Lock that guards references to |camera_thread_|. |
- static Lock thread_lock_; |
+ mutable Lock thread_lock_; |
DISALLOW_COPY_AND_ASSIGN(Camera); |
}; |