diff options
Diffstat (limited to 'libs/gui/Surface.cpp')
| -rw-r--r-- | libs/gui/Surface.cpp | 22 | 
1 files changed, 20 insertions, 2 deletions
| diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index 98489b1feb..aa6f97e2e7 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -64,6 +64,7 @@ Surface::Surface(      mReqFormat = 0;      mReqUsage = 0;      mTimestamp = NATIVE_WINDOW_TIMESTAMP_AUTO; +    mDataSpace = HAL_DATASPACE_UNKNOWN;      mCrop.clear();      mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE;      mTransform = 0; @@ -317,8 +318,8 @@ int Surface::queueBuffer(android_native_buffer_t* buffer, int fenceFd) {      sp<Fence> fence(fenceFd >= 0 ? new Fence(fenceFd) : Fence::NO_FENCE);      IGraphicBufferProducer::QueueBufferOutput output;      IGraphicBufferProducer::QueueBufferInput input(timestamp, isAutoTimestamp, -            crop, mScalingMode, mTransform ^ mStickyTransform, mSwapIntervalZero, -            fence, mStickyTransform); +            mDataSpace, crop, mScalingMode, mTransform ^ mStickyTransform, +            mSwapIntervalZero, fence, mStickyTransform);      status_t err = mGraphicBufferProducer->queueBuffer(i, input, &output);      if (err != OK)  {          ALOGE("queueBuffer: error queuing buffer to SurfaceTexture, %d", err); @@ -449,6 +450,9 @@ int Surface::perform(int operation, va_list args)      case NATIVE_WINDOW_SET_SIDEBAND_STREAM:          res = dispatchSetSidebandStream(args);          break; +    case NATIVE_WINDOW_SET_BUFFERS_DATASPACE: +        res = dispatchSetBuffersDataSpace(args); +        break;      default:          res = NAME_NOT_FOUND;          break; @@ -546,6 +550,12 @@ int Surface::dispatchSetSidebandStream(va_list args) {      return OK;  } +int Surface::dispatchSetBuffersDataSpace(va_list args) { +    android_dataspace dataspace = +            static_cast<android_dataspace>(va_arg(args, int)); +    return setBuffersDataSpace(dataspace); +} +  int Surface::connect(int api) {      static sp<IProducerListener> listener = new DummyProducerListener();      return connect(api, listener); @@ -727,6 +737,14 @@ int Surface::setBuffersTimestamp(int64_t timestamp)      return NO_ERROR;  } +int Surface::setBuffersDataSpace(android_dataspace dataSpace) +{ +    ALOGV("Surface::setBuffersDataSpace"); +    Mutex::Autolock lock(mMutex); +    mDataSpace = dataSpace; +    return NO_ERROR; +} +  void Surface::freeAllBuffers() {      for (int i = 0; i < NUM_BUFFER_SLOTS; i++) {          mSlots[i].buffer = 0; |