android: Remove internal thread
Now that libcamera creates threads internally and doesn't rely on an application-provided event loop, remove the thread from the Android Camera HAL layer. The CameraProxy class becomes meaningless, remove it and communicate directly from the CameraHalManager to the CameraDevice. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
@@ -7,8 +7,7 @@
|
||||
#ifndef __ANDROID_CAMERA_MANAGER_H__
|
||||
#define __ANDROID_CAMERA_MANAGER_H__
|
||||
|
||||
#include <condition_variable>
|
||||
#include <mutex>
|
||||
#include <stddef.h>
|
||||
#include <vector>
|
||||
|
||||
#include <hardware/hardware.h>
|
||||
@@ -16,33 +15,27 @@
|
||||
|
||||
#include <libcamera/camera_manager.h>
|
||||
|
||||
#include "thread.h"
|
||||
|
||||
class CameraDevice;
|
||||
class CameraProxy;
|
||||
|
||||
class CameraHalManager : public libcamera::Thread
|
||||
class CameraHalManager
|
||||
{
|
||||
public:
|
||||
CameraHalManager();
|
||||
~CameraHalManager();
|
||||
|
||||
int init();
|
||||
|
||||
CameraProxy *open(unsigned int id, const hw_module_t *module);
|
||||
CameraDevice *open(unsigned int id, const hw_module_t *module);
|
||||
|
||||
unsigned int numCameras() const;
|
||||
int getCameraInfo(unsigned int id, struct camera_info *info);
|
||||
|
||||
private:
|
||||
void run() override;
|
||||
camera_metadata_t *getStaticMetadata(unsigned int id);
|
||||
|
||||
libcamera::CameraManager *cameraManager_;
|
||||
|
||||
std::mutex mutex_;
|
||||
std::condition_variable cv_;
|
||||
|
||||
std::vector<std::unique_ptr<CameraProxy>> proxies_;
|
||||
std::vector<std::unique_ptr<CameraDevice>> cameras_;
|
||||
};
|
||||
|
||||
#endif /* __ANDROID_CAMERA_MANAGER_H__ */
|
||||
|
||||
Reference in New Issue
Block a user