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

Commit e7d5a2f9 authored by Mathias Agopian's avatar Mathias Agopian Committed by Android Git Automerger
Browse files

am 45423465: Merge "fix [2594950] Flash: Zooming in on some content crashes...

am 45423465: Merge "fix [2594950] Flash: Zooming in on some content crashes the Nexus One and causes it to reboot (runtime restart)" into froyo

Merge commit '45423465' into froyo-plus-aosp

* commit '45423465':
  fix [2594950] Flash: Zooming in on some content crashes the Nexus One and causes it to reboot (runtime restart)
parents 1e21ec92 45423465
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -90,6 +90,8 @@ float DisplayHardware::getRefreshRate() const { return mRefreshRate; }
int DisplayHardware::getWidth() const           { return mWidth; }
int DisplayHardware::getWidth() const           { return mWidth; }
int DisplayHardware::getHeight() const          { return mHeight; }
int DisplayHardware::getHeight() const          { return mHeight; }
PixelFormat DisplayHardware::getFormat() const  { return mFormat; }
PixelFormat DisplayHardware::getFormat() const  { return mFormat; }
uint32_t DisplayHardware::getMaxTextureSize() const { return mMaxTextureSize; }
uint32_t DisplayHardware::getMaxViewportDims() const { return mMaxViewportDims; }


void DisplayHardware::init(uint32_t dpy)
void DisplayHardware::init(uint32_t dpy)
{
{
@@ -246,6 +248,11 @@ void DisplayHardware::init(uint32_t dpy)
    LOGI("version   : %s", glGetString(GL_VERSION));
    LOGI("version   : %s", glGetString(GL_VERSION));
    LOGI("extensions: %s", gl_extensions);
    LOGI("extensions: %s", gl_extensions);


    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize);
    glGetIntegerv(GL_MAX_VIEWPORT_DIMS, &mMaxViewportDims);
    LOGI("GL_MAX_TEXTURE_SIZE = %d", mMaxTextureSize);
    LOGI("GL_MAX_VIEWPORT_DIMS = %d", mMaxViewportDims);

#if 0
#if 0
    // for drivers that don't have proper support for flushing cached buffers
    // for drivers that don't have proper support for flushing cached buffers
    // on gralloc unlock, uncomment this block and test for the specific
    // on gralloc unlock, uncomment this block and test for the specific
@@ -273,6 +280,7 @@ void DisplayHardware::init(uint32_t dpy)
#warning "EGL_ANDROID_image_native_buffer not supported"
#warning "EGL_ANDROID_image_native_buffer not supported"
#endif
#endif



    // Unbind the context from this thread
    // Unbind the context from this thread
    eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
    eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);


+4 −0
Original line number Original line Diff line number Diff line
@@ -76,6 +76,8 @@ public:
    PixelFormat getFormat() const;
    PixelFormat getFormat() const;
    uint32_t    getFlags() const;
    uint32_t    getFlags() const;
    void        makeCurrent() const;
    void        makeCurrent() const;
    uint32_t    getMaxTextureSize() const;
    uint32_t    getMaxViewportDims() const;


    uint32_t getPageFlipCount() const;
    uint32_t getPageFlipCount() const;
    EGLDisplay getEGLDisplay() const { return mDisplay; }
    EGLDisplay getEGLDisplay() const { return mDisplay; }
@@ -104,6 +106,8 @@ private:
    PixelFormat     mFormat;
    PixelFormat     mFormat;
    uint32_t        mFlags;
    uint32_t        mFlags;
    mutable uint32_t mPageFlipCount;
    mutable uint32_t mPageFlipCount;
    GLint           mMaxViewportDims;
    GLint           mMaxTextureSize;
    
    
    sp<FramebufferNativeWindow> mNativeWindow;
    sp<FramebufferNativeWindow> mNativeWindow;
    overlay_control_device_t* mOverlayEngine;
    overlay_control_device_t* mOverlayEngine;
+15 −2
Original line number Original line Diff line number Diff line
@@ -41,6 +41,10 @@


namespace android {
namespace android {


template <typename T> inline T min(T a, T b) {
    return a<b ? a : b;
}

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------


const uint32_t Layer::typeInfo = LayerBaseClient::typeInfo | 4;
const uint32_t Layer::typeInfo = LayerBaseClient::typeInfo | 4;
@@ -109,6 +113,15 @@ status_t Layer::setBuffers( uint32_t w, uint32_t h,


    // the display's pixel format
    // the display's pixel format
    const DisplayHardware& hw(graphicPlane(0).displayHardware());
    const DisplayHardware& hw(graphicPlane(0).displayHardware());
    uint32_t const maxSurfaceDims = min(
            hw.getMaxTextureSize(), hw.getMaxViewportDims());

    // never allow a surface larger than what our underlying GL implementation
    // can handle.
    if ((uint32_t(w)>maxSurfaceDims) || (uint32_t(h)>maxSurfaceDims)) {
        return BAD_VALUE;
    }

    PixelFormatInfo displayInfo;
    PixelFormatInfo displayInfo;
    getPixelFormatInfo(hw.getFormat(), &displayInfo);
    getPixelFormatInfo(hw.getFormat(), &displayInfo);
    const uint32_t hwFlags = hw.getFlags();
    const uint32_t hwFlags = hw.getFlags();