Loading services/surfaceflinger/DisplayHardware/DisplayHardware.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ #include "GLExtensions.h" #include "HWComposer.h" #include "SurfaceFlinger.h" using namespace android; Loading Loading @@ -75,7 +76,7 @@ DisplayHardware::DisplayHardware( const sp<SurfaceFlinger>& flinger, uint32_t dpy) : DisplayHardwareBase(flinger, dpy), mFlags(0), mHwc(0) mFlinger(flinger), mFlags(0), mHwc(0) { init(dpy); } Loading Loading @@ -310,7 +311,7 @@ void DisplayHardware::init(uint32_t dpy) // initialize the H/W composer mHwc = new HWComposer(); mHwc = new HWComposer(mFlinger); if (mHwc->initCheck() == NO_ERROR) { mHwc->setFrameBuffer(mDisplay, mSurface); } Loading services/surfaceflinger/DisplayHardware/DisplayHardware.h +1 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ private: void init(uint32_t displayIndex) __attribute__((noinline)); void fini() __attribute__((noinline)); sp<SurfaceFlinger> mFlinger; EGLDisplay mDisplay; EGLSurface mSurface; EGLContext mContext; Loading services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ public: ~DisplayHardwareBase(); // console managment // console management void releaseScreen() const; void acquireScreen() const; bool isScreenAcquired() const; Loading services/surfaceflinger/DisplayHardware/HWComposer.cpp +19 −2 Original line number Diff line number Diff line Loading @@ -30,12 +30,14 @@ #include <EGL/egl.h> #include "HWComposer.h" #include "SurfaceFlinger.h" namespace android { // --------------------------------------------------------------------------- HWComposer::HWComposer() : mModule(0), mHwc(0), mList(0), mCapacity(0), HWComposer::HWComposer(const sp<SurfaceFlinger>& flinger) : mFlinger(flinger), mModule(0), mHwc(0), mList(0), mCapacity(0), mDpy(EGL_NO_DISPLAY), mSur(EGL_NO_SURFACE) { int err = hw_get_module(HWC_HARDWARE_MODULE_ID, &mModule); Loading @@ -44,6 +46,13 @@ HWComposer::HWComposer() err = hwc_open(mModule, &mHwc); LOGE_IF(err, "%s device failed to initialize (%s)", HWC_HARDWARE_COMPOSER, strerror(-err)); if (err == 0) { if (mHwc->registerProcs) { mCBContext.hwc = this; mCBContext.procs.invalidate = &hook_invalidate; mHwc->registerProcs(mHwc, &mCBContext.procs); } } } } Loading @@ -58,6 +67,14 @@ status_t HWComposer::initCheck() const { return mHwc ? NO_ERROR : NO_INIT; } void HWComposer::hook_invalidate(struct hwc_procs* procs) { reinterpret_cast<cb_context *>(procs)->hwc->invalidate(); } void HWComposer::invalidate() { mFlinger->signalEvent(); } void HWComposer::setFrameBuffer(EGLDisplay dpy, EGLSurface sur) { mDpy = (hwc_display_t)dpy; mSur = (hwc_surface_t)sur; Loading services/surfaceflinger/DisplayHardware/HWComposer.h +13 −1 Original line number Diff line number Diff line Loading @@ -24,16 +24,19 @@ #include <hardware/hwcomposer.h> #include <utils/StrongPointer.h> namespace android { // --------------------------------------------------------------------------- class String8; class SurfaceFlinger; class HWComposer { public: HWComposer(); HWComposer(const sp<SurfaceFlinger>& flinger); ~HWComposer(); status_t initCheck() const; Loading @@ -60,12 +63,21 @@ public: void dump(String8& out, char* scratch, size_t SIZE) const; private: struct cb_context { hwc_procs_t procs; HWComposer* hwc; }; static void hook_invalidate(struct hwc_procs* procs); void invalidate(); sp<SurfaceFlinger> mFlinger; hw_module_t const* mModule; hwc_composer_device_t* mHwc; hwc_layer_list_t* mList; size_t mCapacity; hwc_display_t mDpy; hwc_surface_t mSur; cb_context mCBContext; }; Loading Loading
services/surfaceflinger/DisplayHardware/DisplayHardware.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ #include "GLExtensions.h" #include "HWComposer.h" #include "SurfaceFlinger.h" using namespace android; Loading Loading @@ -75,7 +76,7 @@ DisplayHardware::DisplayHardware( const sp<SurfaceFlinger>& flinger, uint32_t dpy) : DisplayHardwareBase(flinger, dpy), mFlags(0), mHwc(0) mFlinger(flinger), mFlags(0), mHwc(0) { init(dpy); } Loading Loading @@ -310,7 +311,7 @@ void DisplayHardware::init(uint32_t dpy) // initialize the H/W composer mHwc = new HWComposer(); mHwc = new HWComposer(mFlinger); if (mHwc->initCheck() == NO_ERROR) { mHwc->setFrameBuffer(mDisplay, mSurface); } Loading
services/surfaceflinger/DisplayHardware/DisplayHardware.h +1 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ private: void init(uint32_t displayIndex) __attribute__((noinline)); void fini() __attribute__((noinline)); sp<SurfaceFlinger> mFlinger; EGLDisplay mDisplay; EGLSurface mSurface; EGLContext mContext; Loading
services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ public: ~DisplayHardwareBase(); // console managment // console management void releaseScreen() const; void acquireScreen() const; bool isScreenAcquired() const; Loading
services/surfaceflinger/DisplayHardware/HWComposer.cpp +19 −2 Original line number Diff line number Diff line Loading @@ -30,12 +30,14 @@ #include <EGL/egl.h> #include "HWComposer.h" #include "SurfaceFlinger.h" namespace android { // --------------------------------------------------------------------------- HWComposer::HWComposer() : mModule(0), mHwc(0), mList(0), mCapacity(0), HWComposer::HWComposer(const sp<SurfaceFlinger>& flinger) : mFlinger(flinger), mModule(0), mHwc(0), mList(0), mCapacity(0), mDpy(EGL_NO_DISPLAY), mSur(EGL_NO_SURFACE) { int err = hw_get_module(HWC_HARDWARE_MODULE_ID, &mModule); Loading @@ -44,6 +46,13 @@ HWComposer::HWComposer() err = hwc_open(mModule, &mHwc); LOGE_IF(err, "%s device failed to initialize (%s)", HWC_HARDWARE_COMPOSER, strerror(-err)); if (err == 0) { if (mHwc->registerProcs) { mCBContext.hwc = this; mCBContext.procs.invalidate = &hook_invalidate; mHwc->registerProcs(mHwc, &mCBContext.procs); } } } } Loading @@ -58,6 +67,14 @@ status_t HWComposer::initCheck() const { return mHwc ? NO_ERROR : NO_INIT; } void HWComposer::hook_invalidate(struct hwc_procs* procs) { reinterpret_cast<cb_context *>(procs)->hwc->invalidate(); } void HWComposer::invalidate() { mFlinger->signalEvent(); } void HWComposer::setFrameBuffer(EGLDisplay dpy, EGLSurface sur) { mDpy = (hwc_display_t)dpy; mSur = (hwc_surface_t)sur; Loading
services/surfaceflinger/DisplayHardware/HWComposer.h +13 −1 Original line number Diff line number Diff line Loading @@ -24,16 +24,19 @@ #include <hardware/hwcomposer.h> #include <utils/StrongPointer.h> namespace android { // --------------------------------------------------------------------------- class String8; class SurfaceFlinger; class HWComposer { public: HWComposer(); HWComposer(const sp<SurfaceFlinger>& flinger); ~HWComposer(); status_t initCheck() const; Loading @@ -60,12 +63,21 @@ public: void dump(String8& out, char* scratch, size_t SIZE) const; private: struct cb_context { hwc_procs_t procs; HWComposer* hwc; }; static void hook_invalidate(struct hwc_procs* procs); void invalidate(); sp<SurfaceFlinger> mFlinger; hw_module_t const* mModule; hwc_composer_device_t* mHwc; hwc_layer_list_t* mList; size_t mCapacity; hwc_display_t mDpy; hwc_surface_t mSur; cb_context mCBContext; }; Loading