Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09443aeb authored by Jamie Gennis's avatar Jamie Gennis Committed by Android Git Automerger
Browse files

am 62884505: Merge "Reset ANativeWindow crop on buffer geometry changes." into honeycomb

* commit '62884505':
  Reset ANativeWindow crop on buffer geometry changes.
parents 935275cb 62884505
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -315,6 +315,8 @@ static inline int native_window_set_buffer_count(
 * If all parameters are 0, the normal behavior is restored. That is,
 * dequeued buffers following this call will be sized to the window's size.
 *
 * Calling this function will reset the window crop to a NULL value, which
 * disables cropping of the buffers.
 */
static inline int native_window_set_buffers_geometry(
        ANativeWindow* window,
+11 −6
Original line number Diff line number Diff line
@@ -238,13 +238,15 @@ int SurfaceTextureClient::setCrop(Rect const* rect)
    LOGV("SurfaceTextureClient::setCrop");
    Mutex::Autolock lock(mMutex);

    // empty/invalid rects are not allowed
    if (rect->isEmpty())
        return BAD_VALUE;
    Rect realRect;
    if (rect == NULL || rect->isEmpty()) {
        realRect = Rect(0, 0);
    } else {
        realRect = *rect;
    }

    status_t err = mSurfaceTexture->setCrop(*rect);
    LOGE_IF(err, "ISurfaceTexture::setCrop(...) returned %s",
            strerror(-err));
    LOGE_IF(err, "ISurfaceTexture::setCrop(...) returned %s", strerror(-err));

    return err;
}
@@ -280,7 +282,10 @@ int SurfaceTextureClient::setBuffersGeometry(int w, int h, int format)
    mReqHeight = h;
    mReqFormat = format;

    return NO_ERROR;
    status_t err = mSurfaceTexture->setCrop(Rect(0, 0));
    LOGE_IF(err, "ISurfaceTexture::setCrop(...) returned %s", strerror(-err));

    return err;
}

int SurfaceTextureClient::setBuffersTransform(int transform)
+10 −5
Original line number Diff line number Diff line
@@ -827,13 +827,15 @@ int Surface::disconnect(int api)

int Surface::crop(Rect const* rect)
{
    // empty/invalid rects are not allowed
    if (rect->isEmpty())
        return BAD_VALUE;

    Mutex::Autolock _l(mSurfaceLock);
    // TODO: validate rect size

    if (rect == NULL || rect->isEmpty()) {
        mNextBufferCrop = Rect(0,0);
    } else {
        mNextBufferCrop = *rect;
    }

    return NO_ERROR;
}

@@ -884,6 +886,9 @@ int Surface::setBuffersGeometry(int w, int h, int format)
        // EGLConfig validation.
        mFormat = format;
    }

    mNextBufferCrop = Rect(0,0);

    return NO_ERROR;
}

+3 −5
Original line number Diff line number Diff line
@@ -498,13 +498,11 @@ void LayerBase::drawWithOpenGL(const Region& clip, const Texture& texture) const
}

void LayerBase::setBufferCrop(const Rect& crop) {
    if (!crop.isEmpty()) {
    if (mBufferCrop != crop) {
        mBufferCrop = crop;
        mFlinger->invalidateHwcGeometry();
    }
}
}

void LayerBase::setBufferTransform(uint32_t transform) {
    if (mBufferTransform != transform) {