Fix a media server crash (bug 1807910): part one

Add a factory method that creates a Camera object from a remote client

Next:
The changes in authordriver.cpp and android_camera_input.cpp will come.
and the constructor for Camera object will be removed.
This commit is contained in:
James Dong
2009-04-23 14:07:23 -07:00
parent 0a57e5b730
commit 2adc2dbbd6
2 changed files with 15 additions and 2 deletions

View File

@@ -78,8 +78,8 @@ class Camera : public BnCameraClient, public IBinder::DeathRecipient
{
public:
// construct a camera client from an existing remote
Camera(const sp<ICamera>& camera);
Camera(const sp<ICamera>& camera); // to be removed
static sp<Camera> create(const sp<ICamera>& camera);
static sp<Camera> connect();
~Camera();
void init();

View File

@@ -75,6 +75,19 @@ Camera::Camera(const sp<ICamera>& camera)
}
}
sp<Camera> Camera::create(const sp<ICamera>& camera)
{
sp<Camera> c = new Camera();
// connect this client to existing camera remote
if (camera->connect(c) == NO_ERROR) {
c->mStatus = NO_ERROR;
c->mCamera = camera;
camera->asBinder()->linkToDeath(c);
}
return c;
}
void Camera::init()
{
mStatus = UNKNOWN_ERROR;