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);
|
||||
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
|
||||
// actual hardware composer underneath.
|
||||
mHwc = new HWComposer(this,
|
||||
@ -489,15 +498,6 @@ void SurfaceFlinger::init() {
|
||||
// (which may happens before we render something)
|
||||
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->run("EventControl", PRIORITY_URGENT_DISPLAY);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user