sf: Initialize EventThread before creating HWC
Once HWC is created, it could use any of the provided hooks, which could lead to a crash if the EventThread (handler) isn't initialized prior to creating HWC. Change-Id: I5ea35fe9bcb150fb74aae1295b798bd787ad6cee
This commit is contained in:
parent
2ab05fc551
commit
f948105810
@ -438,6 +438,15 @@ void SurfaceFlinger::init() {
|
|||||||
mEGLDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
mEGLDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
eglInitialize(mEGLDisplay, NULL, NULL);
|
eglInitialize(mEGLDisplay, NULL, NULL);
|
||||||
|
|
||||||
|
// start the EventThread
|
||||||
|
sp<VSyncSource> vsyncSrc = new DispSyncSource(&mPrimaryDispSync,
|
||||||
|
vsyncPhaseOffsetNs, true, "app");
|
||||||
|
mEventThread = new EventThread(vsyncSrc);
|
||||||
|
sp<VSyncSource> sfVsyncSrc = new DispSyncSource(&mPrimaryDispSync,
|
||||||
|
sfVsyncPhaseOffsetNs, true, "sf");
|
||||||
|
mSFEventThread = new EventThread(sfVsyncSrc);
|
||||||
|
mEventQueue.setEventThread(mSFEventThread);
|
||||||
|
|
||||||
// Initialize the H/W composer object. There may or may not be an
|
// Initialize the H/W composer object. There may or may not be an
|
||||||
// actual hardware composer underneath.
|
// actual hardware composer underneath.
|
||||||
mHwc = new HWComposer(this,
|
mHwc = new HWComposer(this,
|
||||||
@ -489,15 +498,6 @@ void SurfaceFlinger::init() {
|
|||||||
// (which may happens before we render something)
|
// (which may happens before we render something)
|
||||||
getDefaultDisplayDevice()->makeCurrent(mEGLDisplay, mEGLContext);
|
getDefaultDisplayDevice()->makeCurrent(mEGLDisplay, mEGLContext);
|
||||||
|
|
||||||
// start the EventThread
|
|
||||||
sp<VSyncSource> vsyncSrc = new DispSyncSource(&mPrimaryDispSync,
|
|
||||||
vsyncPhaseOffsetNs, true, "app");
|
|
||||||
mEventThread = new EventThread(vsyncSrc);
|
|
||||||
sp<VSyncSource> sfVsyncSrc = new DispSyncSource(&mPrimaryDispSync,
|
|
||||||
sfVsyncPhaseOffsetNs, true, "sf");
|
|
||||||
mSFEventThread = new EventThread(sfVsyncSrc);
|
|
||||||
mEventQueue.setEventThread(mSFEventThread);
|
|
||||||
|
|
||||||
mEventControlThread = new EventControlThread(this);
|
mEventControlThread = new EventControlThread(this);
|
||||||
mEventControlThread->run("EventControl", PRIORITY_URGENT_DISPLAY);
|
mEventControlThread->run("EventControl", PRIORITY_URGENT_DISPLAY);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user