diff options
| author | 2008-12-19 08:31:54 -0800 | |
|---|---|---|
| committer | 2008-12-19 08:31:54 -0800 | |
| commit | 772a89695f179b51d16b26c1b0d946aa3e850e70 (patch) | |
| tree | 9a9fdadd1301625f875a3c126c986c79e3363ac4 /libs/ui/ICamera.cpp | |
| parent | d34e59679f6a98e9e67ef4bd18da6e5a86d386bc (diff) | |
| parent | e09fd9e819c23dc90bca68375645e15544861330 (diff) | |
Merge commit 'remotes/korg/cupcake'
Conflicts:
	core/java/com/android/internal/app/AlertController.java
	core/res/res/values/strings.xml
	media/java/android/media/AudioSystem.java
	services/java/com/android/server/LocationManagerService.java
Diffstat (limited to 'libs/ui/ICamera.cpp')
| -rw-r--r-- | libs/ui/ICamera.cpp | 82 | 
1 files changed, 57 insertions, 25 deletions
| diff --git a/libs/ui/ICamera.cpp b/libs/ui/ICamera.cpp index 420bb490a0..6a2dc6bab3 100644 --- a/libs/ui/ICamera.cpp +++ b/libs/ui/ICamera.cpp @@ -2,41 +2,40 @@  **  ** Copyright 2008, The Android Open Source Project  ** -** Licensed under the Apache License, Version 2.0 (the "License");  -** you may not use this file except in compliance with the License.  -** You may obtain a copy of the License at  +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at  ** -**     http://www.apache.org/licenses/LICENSE-2.0  +**     http://www.apache.org/licenses/LICENSE-2.0  ** -** Unless required by applicable law or agreed to in writing, software  -** distributed under the License is distributed on an "AS IS" BASIS,  -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  -** See the License for the specific language governing permissions and  +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and  ** limitations under the License.  */ +//#define LOG_NDEBUG 0 +#define LOG_TAG "ICamera" +#include <utils/Log.h>  #include <stdint.h>  #include <sys/types.h> -  #include <utils/Parcel.h> -  #include <ui/ICamera.h> -#define LOG_TAG "@@@@@@@@@@@ CAMERA @@@@@@@@@@@" -#include <utils/Log.h> -  namespace android {  enum {      DISCONNECT = IBinder::FIRST_CALL_TRANSACTION,      SET_PREVIEW_DISPLAY, -    SET_HAS_FRAME_CALLBACK, +    SET_FRAME_CALLBACK_FLAG,      START_PREVIEW,      STOP_PREVIEW,      AUTO_FOCUS,      TAKE_PICTURE,      SET_PARAMETERS, -    GET_PARAMETERS +    GET_PARAMETERS, +    CONNECT  };  class BpCamera: public BpInterface<ICamera> @@ -50,6 +49,7 @@ public:      // disconnect from camera service      void disconnect()      { +        LOGV("disconnect");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          remote()->transact(DISCONNECT, data, &reply); @@ -58,25 +58,29 @@ public:      // pass the buffered ISurface to the camera service      status_t setPreviewDisplay(const sp<ISurface>& surface)      { +        LOGV("setPreviewDisplay");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          data.writeStrongBinder(surface->asBinder());          remote()->transact(SET_PREVIEW_DISPLAY, data, &reply);          return reply.readInt32();      } -     -    // tell the service whether to callback with each preview frame -    void setHasFrameCallback(bool installed) + +    // set the frame callback flag to affect how the received frames from +    // preview are handled. +    void setFrameCallbackFlag(int frame_callback_flag)      { +        LOGV("setFrameCallbackFlag(%d)", frame_callback_flag);          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); -        data.writeInt32((int32_t)installed); -        remote()->transact(SET_HAS_FRAME_CALLBACK, data, &reply); +        data.writeInt32(frame_callback_flag); +        remote()->transact(SET_FRAME_CALLBACK_FLAG, data, &reply);      }      // start preview mode, must call setPreviewDisplay first      status_t startPreview()      { +        LOGV("startPreview");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          remote()->transact(START_PREVIEW, data, &reply); @@ -86,6 +90,7 @@ public:      // stop preview mode      void stopPreview()      { +        LOGV("stopPreview");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          remote()->transact(STOP_PREVIEW, data, &reply); @@ -94,6 +99,7 @@ public:      // auto focus      status_t autoFocus()      { +        LOGV("autoFocus");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          remote()->transact(AUTO_FOCUS, data, &reply); @@ -104,6 +110,7 @@ public:      // take a picture - returns an IMemory (ref-counted mmap)      status_t takePicture()      { +        LOGV("takePicture");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          remote()->transact(TAKE_PICTURE, data, &reply); @@ -114,6 +121,7 @@ public:      // set preview/capture parameters - key/value pairs      status_t setParameters(const String8& params)      { +        LOGV("setParameters");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          data.writeString8(params); @@ -124,11 +132,20 @@ public:      // get preview/capture parameters - key/value pairs      String8 getParameters() const      { +        LOGV("getParameters");          Parcel data, reply;          data.writeInterfaceToken(ICamera::getInterfaceDescriptor());          remote()->transact(GET_PARAMETERS, data, &reply);          return reply.readString8();      } +    virtual status_t connect(const sp<ICameraClient>& cameraClient) +    { +        Parcel data, reply; +        data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); +        data.writeStrongBinder(cameraClient->asBinder()); +        remote()->transact(CONNECT, data, &reply); +        return reply.readInt32(); +    }  };  IMPLEMENT_META_INTERFACE(Camera, "android.hardware.ICamera"); @@ -146,53 +163,68 @@ status_t BnCamera::onTransact(  {      switch(code) {          case DISCONNECT: { +            LOGV("DISCONNECT");              CHECK_INTERFACE(ICamera, data, reply);              disconnect();              return NO_ERROR;          } break;          case SET_PREVIEW_DISPLAY: { +            LOGV("SET_PREVIEW_DISPLAY");              CHECK_INTERFACE(ICamera, data, reply);              sp<ISurface> surface = interface_cast<ISurface>(data.readStrongBinder());              reply->writeInt32(setPreviewDisplay(surface));              return NO_ERROR;          } break; -        case SET_HAS_FRAME_CALLBACK: { +        case SET_FRAME_CALLBACK_FLAG: { +            LOGV("SET_FRAME_CALLBACK_TYPE");              CHECK_INTERFACE(ICamera, data, reply); -            bool installed = (bool)data.readInt32(); -            setHasFrameCallback(installed); +            int frame_callback_flag = data.readInt32(); +            setFrameCallbackFlag(frame_callback_flag);              return NO_ERROR;          } break;          case START_PREVIEW: { +            LOGV("START_PREVIEW");              CHECK_INTERFACE(ICamera, data, reply);              reply->writeInt32(startPreview());              return NO_ERROR;          } break;          case STOP_PREVIEW: { +            LOGV("STOP_PREVIEW");              CHECK_INTERFACE(ICamera, data, reply);              stopPreview();              return NO_ERROR;          } break;          case AUTO_FOCUS: { +            LOGV("AUTO_FOCUS");              CHECK_INTERFACE(ICamera, data, reply);              reply->writeInt32(autoFocus());              return NO_ERROR;          } break;          case TAKE_PICTURE: { +            LOGV("TAKE_PICTURE");              CHECK_INTERFACE(ICamera, data, reply);              reply->writeInt32(takePicture());              return NO_ERROR;          } break;          case SET_PARAMETERS: { +            LOGV("SET_PARAMETERS");              CHECK_INTERFACE(ICamera, data, reply); -             String8 params(data.readString8()); -             reply->writeInt32(setParameters(params)); +            String8 params(data.readString8()); +            reply->writeInt32(setParameters(params));              return NO_ERROR;           } break;          case GET_PARAMETERS: { +            LOGV("GET_PARAMETERS");              CHECK_INTERFACE(ICamera, data, reply);               reply->writeString8(getParameters());              return NO_ERROR;           } break; +        case CONNECT: { +            CHECK_INTERFACE(ICamera, data, reply); +            sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder()); +            reply->writeInt32(connect(cameraClient)); +            return NO_ERROR; +        } break;          default:              return BBinder::onTransact(code, data, reply, flags);      } |