Merge "Move eglSwapBuffers out of HWComposer" into jb-mr1-dev
This commit is contained in:
commit
cbc388ca6a
@ -39,8 +39,6 @@
|
||||
#include <cutils/log.h>
|
||||
#include <cutils/properties.h>
|
||||
|
||||
#include <EGL/egl.h>
|
||||
|
||||
#include "Layer.h" // needed only for debugging
|
||||
#include "LayerBase.h"
|
||||
#include "HWComposer.h"
|
||||
@ -108,7 +106,6 @@ HWComposer::HWComposer(
|
||||
: mFlinger(flinger),
|
||||
mModule(0), mHwc(0), mList(0), mCapacity(0),
|
||||
mNumOVLayers(0), mNumFBLayers(0),
|
||||
mDpy(EGL_NO_DISPLAY), mSur(EGL_NO_SURFACE),
|
||||
mCBContext(new cb_context),
|
||||
mEventHandler(handler),
|
||||
mRefreshPeriod(refreshPeriod),
|
||||
@ -207,11 +204,6 @@ void HWComposer::eventControl(int event, int enabled) {
|
||||
}
|
||||
}
|
||||
|
||||
void HWComposer::setFrameBuffer(EGLDisplay dpy, EGLSurface sur) {
|
||||
mDpy = (hwc_display_t)dpy;
|
||||
mSur = (hwc_surface_t)sur;
|
||||
}
|
||||
|
||||
status_t HWComposer::createWorkList(size_t numLayers) {
|
||||
if (mHwc) {
|
||||
if (!mList || mCapacity < numLayers) {
|
||||
@ -270,15 +262,13 @@ size_t HWComposer::getLayerCount(int type) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
status_t HWComposer::commit() const {
|
||||
status_t HWComposer::commit(void* fbDisplay, void* fbSurface) const {
|
||||
int err = NO_ERROR;
|
||||
if (mHwc) {
|
||||
err = mHwc->set(mHwc, mDpy, mSur, mList);
|
||||
err = mHwc->set(mHwc, fbDisplay, fbSurface, mList);
|
||||
if (mList) {
|
||||
mList->flags &= ~HWC_GEOMETRY_CHANGED;
|
||||
}
|
||||
} else {
|
||||
eglSwapBuffers(mDpy, mSur);
|
||||
}
|
||||
return (status_t)err;
|
||||
}
|
||||
|
@ -20,8 +20,6 @@
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <EGL/egl.h>
|
||||
|
||||
#include <hardware/hwcomposer_defs.h>
|
||||
|
||||
#include <utils/Condition.h>
|
||||
@ -63,9 +61,6 @@ public:
|
||||
|
||||
status_t initCheck() const;
|
||||
|
||||
// tells the HAL what the framebuffer is
|
||||
void setFrameBuffer(EGLDisplay dpy, EGLSurface sur);
|
||||
|
||||
// Asks the HAL what it can do
|
||||
status_t prepare() const;
|
||||
|
||||
@ -73,7 +68,7 @@ public:
|
||||
status_t disable();
|
||||
|
||||
// commits the list
|
||||
status_t commit() const;
|
||||
status_t commit(void* fbDisplay, void* fbSurface) const;
|
||||
|
||||
// release hardware resources and blank screen
|
||||
status_t release() const;
|
||||
@ -234,8 +229,6 @@ private:
|
||||
size_t mCapacity;
|
||||
mutable size_t mNumOVLayers;
|
||||
mutable size_t mNumFBLayers;
|
||||
EGLDisplay mDpy;
|
||||
EGLSurface mSur;
|
||||
cb_context* mCBContext;
|
||||
EventHandler& mEventHandler;
|
||||
nsecs_t mRefreshPeriod;
|
||||
|
@ -363,8 +363,8 @@ status_t SurfaceFlinger::readyToRun()
|
||||
"Initializing graphics H/W...");
|
||||
|
||||
// initialize EGL
|
||||
EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
eglInitialize(display, NULL, NULL);
|
||||
mEGLDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
eglInitialize(mEGLDisplay, NULL, NULL);
|
||||
|
||||
// Initialize the main display
|
||||
// create native window to main display
|
||||
@ -378,8 +378,8 @@ status_t SurfaceFlinger::readyToRun()
|
||||
// initialize the config and context
|
||||
int format;
|
||||
window->query(window, NATIVE_WINDOW_FORMAT, &format);
|
||||
mEGLConfig = selectEGLConfig(display, format);
|
||||
mEGLContext = createGLContext(display, mEGLConfig);
|
||||
mEGLConfig = selectEGLConfig(mEGLDisplay, format);
|
||||
mEGLContext = createGLContext(mEGLDisplay, mEGLConfig);
|
||||
|
||||
// initialize our main display hardware
|
||||
DisplayHardware* const hw = new DisplayHardware(this, 0, anw, mEGLConfig);
|
||||
@ -387,7 +387,7 @@ status_t SurfaceFlinger::readyToRun()
|
||||
|
||||
// initialize OpenGL ES
|
||||
EGLSurface surface = hw->getEGLSurface();
|
||||
initializeGL(display, surface);
|
||||
initializeGL(mEGLDisplay, surface);
|
||||
|
||||
// start the EventThread
|
||||
mEventThread = new EventThread(this);
|
||||
@ -397,9 +397,6 @@ status_t SurfaceFlinger::readyToRun()
|
||||
mHwc = new HWComposer(this,
|
||||
*static_cast<HWComposer::EventHandler *>(this),
|
||||
hw->getRefreshPeriod());
|
||||
if (mHwc->initCheck() == NO_ERROR) {
|
||||
mHwc->setFrameBuffer(display, surface);
|
||||
}
|
||||
|
||||
// We're now ready to accept clients...
|
||||
mReadyToRunBarrier.open();
|
||||
@ -733,15 +730,16 @@ void SurfaceFlinger::postFramebuffer()
|
||||
}
|
||||
|
||||
hw.flip(mSwapRegion);
|
||||
hwc.commit();
|
||||
|
||||
if (hwc.initCheck() == NO_ERROR) {
|
||||
hwc.commit(mEGLDisplay, hw.getEGLSurface());
|
||||
HWComposer::LayerListIterator cur = hwc.begin();
|
||||
const HWComposer::LayerListIterator end = hwc.end();
|
||||
for (size_t i = 0; cur != end && i < numLayers; ++i, ++cur) {
|
||||
layers[i]->onLayerDisplayed(&*cur);
|
||||
}
|
||||
} else {
|
||||
eglSwapBuffers(mEGLDisplay, hw.getEGLSurface());
|
||||
for (size_t i = 0; i < numLayers; i++) {
|
||||
layers[i]->onLayerDisplayed(NULL);
|
||||
}
|
||||
|
@ -390,6 +390,7 @@ private:
|
||||
GLint mMaxTextureSize;
|
||||
EGLContext mEGLContext;
|
||||
EGLConfig mEGLConfig;
|
||||
EGLDisplay mEGLDisplay;
|
||||
|
||||
// Can only accessed from the main thread, these members
|
||||
// don't need synchronization
|
||||
|
Loading…
Reference in New Issue
Block a user