Loading core/java/android/service/wallpaper/WallpaperService.java +54 −12 Original line number Diff line number Diff line Loading @@ -578,6 +578,7 @@ public abstract class WallpaperService extends Service { */ public void reportEngineShown(boolean waitForEngineShown) { if (mIWallpaperEngine.mShownReported) return; Trace.beginSection("WPMS.reportEngineShown-" + waitForEngineShown); Log.d(TAG, "reportEngineShown: shouldWait=" + waitForEngineShown); if (!waitForEngineShown) { Message message = mCaller.obtainMessage(MSG_REPORT_SHOWN); Loading @@ -590,6 +591,7 @@ public abstract class WallpaperService extends Service { mCaller.sendMessageDelayed(message, TimeUnit.SECONDS.toMillis(5)); } } Trace.endSection(); } /** Loading Loading @@ -1259,7 +1261,9 @@ public abstract class WallpaperService extends Service { didSurface = true; if (DEBUG) Log.v(TAG, "onSurfaceCreated(" + mSurfaceHolder + "): " + this); Trace.beginSection("WPMS.Engine.onSurfaceCreated"); onSurfaceCreated(mSurfaceHolder); Trace.endSection(); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); if (callbacks != null) { for (SurfaceHolder.Callback c : callbacks) { Loading @@ -1285,8 +1289,10 @@ public abstract class WallpaperService extends Service { + ", " + mCurWidth + ", " + mCurHeight + "): " + this); didSurface = true; Trace.beginSection("WPMS.Engine.onSurfaceChanged"); onSurfaceChanged(mSurfaceHolder, mFormat, mCurWidth, mCurHeight); Trace.endSection(); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); if (callbacks != null) { for (SurfaceHolder.Callback c : callbacks) { Loading @@ -1303,11 +1309,15 @@ public abstract class WallpaperService extends Service { if (DEBUG) { Log.v(TAG, "dispatching insets=" + windowInsets); } Trace.beginSection("WPMS.Engine.onApplyWindowInsets"); onApplyWindowInsets(windowInsets); Trace.endSection(); } if (redrawNeeded) { Trace.beginSection("WPMS.Engine.onSurfaceRedrawNeeded"); onSurfaceRedrawNeeded(mSurfaceHolder); Trace.endSection(); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); if (callbacks != null) { for (SurfaceHolder.Callback c : callbacks) { Loading @@ -1332,11 +1342,15 @@ public abstract class WallpaperService extends Service { // the state to get them to notice. if (DEBUG) Log.v(TAG, "onVisibilityChanged(true) at surface: " + this); Trace.beginSection("WPMS.Engine.onVisibilityChanged-true"); onVisibilityChanged(true); Trace.endSection(); } if (DEBUG) Log.v(TAG, "onVisibilityChanged(false) at surface: " + this); Trace.beginSection("WPMS.Engine.onVisibilityChanged-false"); onVisibilityChanged(false); Trace.endSection(); } } finally { mIsCreating = false; Loading Loading @@ -1422,12 +1436,16 @@ public abstract class WallpaperService extends Service { mDisplayInstallOrientation = mDisplay.getInstallOrientation(); if (DEBUG) Log.v(TAG, "onCreate(): " + this); Trace.beginSection("WPMS.Engine.onCreate"); onCreate(mSurfaceHolder); Trace.endSection(); mInitializing = false; mReportedVisible = false; Trace.beginSection("WPMS.Engine.updateSurface"); updateSurface(false, false, false); Trace.endSection(); } /** Loading Loading @@ -2237,14 +2255,15 @@ public abstract class WallpaperService extends Service { public void reportShown() { if (!mShownReported) { mShownReported = true; Trace.beginSection("WPMS.mConnection.engineShown"); try { mConnection.engineShown(this); Log.d(TAG, "Wallpaper has updated the surface:" + mWallpaperManager.getWallpaperInfo()); } catch (RemoteException e) { Log.w(TAG, "Wallpaper host disappeared", e); return; } Trace.endSection(); } } Loading Loading @@ -2286,6 +2305,27 @@ public abstract class WallpaperService extends Service { return mEngine == null ? null : SurfaceControl.mirrorSurface(mEngine.mSurfaceControl); } private void doAttachEngine() { Trace.beginSection("WPMS.onCreateEngine"); Engine engine = onCreateEngine(); Trace.endSection(); mEngine = engine; Trace.beginSection("WPMS.mConnection.attachEngine-" + mDisplayId); try { mConnection.attachEngine(this, mDisplayId); } catch (RemoteException e) { engine.detach(); Log.w(TAG, "Wallpaper host disappeared", e); return; } finally { Trace.endSection(); } mActiveEngines.add(engine); Trace.beginSection("WPMS.engine.attach"); engine.attach(this); Trace.endSection(); } private void doDetachEngine() { mActiveEngines.remove(mEngine); mEngine.detach(); Loading @@ -2311,21 +2351,15 @@ public abstract class WallpaperService extends Service { } switch (message.what) { case DO_ATTACH: { Engine engine = onCreateEngine(); mEngine = engine; try { mConnection.attachEngine(this, mDisplayId); } catch (RemoteException e) { engine.detach(); Log.w(TAG, "Wallpaper host disappeared", e); return; } mActiveEngines.add(engine); engine.attach(this); Trace.beginSection("WPMS.DO_ATTACH"); doAttachEngine(); Trace.endSection(); return; } case DO_DETACH: { Trace.beginSection("WPMS.DO_DETACH"); doDetachEngine(); Trace.endSection(); return; } case DO_SET_DESIRED_SIZE: { Loading Loading @@ -2406,7 +2440,9 @@ public abstract class WallpaperService extends Service { } } break; case MSG_REPORT_SHOWN: { Trace.beginSection("WPMS.MSG_REPORT_SHOWN"); reportShown(); Trace.endSection(); } break; default : Log.w(TAG, "Unknown message type " + message.what); Loading @@ -2430,8 +2466,10 @@ public abstract class WallpaperService extends Service { public void attach(IWallpaperConnection conn, IBinder windowToken, int windowType, boolean isPreview, int reqWidth, int reqHeight, Rect padding, int displayId, @SetWallpaperFlags int which) { Trace.beginSection("WPMS.ServiceWrapper.attach"); mEngineWrapper = new IWallpaperEngineWrapper(mTarget, conn, windowToken, windowType, isPreview, reqWidth, reqHeight, padding, displayId); Trace.endSection(); } @Override Loading @@ -2442,16 +2480,20 @@ public abstract class WallpaperService extends Service { @Override public void onCreate() { Trace.beginSection("WPMS.onCreate"); super.onCreate(); Trace.endSection(); } @Override public void onDestroy() { Trace.beginSection("WPMS.onDestroy"); super.onDestroy(); for (int i=0; i<mActiveEngines.size(); i++) { mActiveEngines.get(i).detach(); } mActiveEngines.clear(); Trace.endSection(); } /** Loading services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +19 −0 Original line number Diff line number Diff line Loading @@ -1157,6 +1157,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Slog.w(TAG, "WallpaperService is not connected yet"); return; } TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.connectLocked-" + wallpaper.wallpaperComponent); if (DEBUG) Slog.v(TAG, "Adding window token: " + mToken); mWindowManagerInternal.addWindowToken(mToken, TYPE_WALLPAPER, mDisplayId, null /* options */); Loading @@ -1173,6 +1175,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub false /* fromUser */, wallpaper, null /* reply */); } } t.traceEnd(); } void disconnectLocked() { Loading Loading @@ -1322,6 +1325,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub @Override public void onServiceConnected(ComponentName name, IBinder service) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.onServiceConnected-" + name); synchronized (mLock) { if (mWallpaper.connection == this) { mService = IWallpaperService.Stub.asInterface(service); Loading @@ -1337,6 +1342,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub mContext.getMainThreadHandler().removeCallbacks(mTryToRebindRunnable); } } t.traceEnd(); } @Override Loading Loading @@ -1544,6 +1550,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub public void engineShown(IWallpaperEngine engine) { synchronized (mLock) { if (mReply != null) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.mReply.sendResult"); final long ident = Binder.clearCallingIdentity(); try { mReply.sendResult(null); Loading @@ -1551,6 +1559,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Binder.restoreCallingIdentity(ident); Slog.d(TAG, "failed to send callback!", e); } t.traceEnd(); mReply = null; } } Loading Loading @@ -3049,6 +3058,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return true; } TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.bindWallpaperComponentLocked-" + componentName); try { if (componentName == null) { componentName = mDefaultWallpaperComponent; Loading Loading @@ -3181,6 +3192,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } Slog.w(TAG, msg); return false; } finally { t.traceEnd(); } return true; } Loading Loading @@ -3225,7 +3238,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } private void attachServiceLocked(WallpaperConnection conn, WallpaperData wallpaper) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.attachServiceLocked"); conn.forEachDisplayConnector(connector-> connector.connectLocked(conn, wallpaper)); t.traceEnd(); } private void notifyCallbacksLocked(WallpaperData wallpaper) { Loading Loading @@ -3351,6 +3367,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } void saveSettingsLocked(int userId) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.saveSettingsLocked-" + userId); JournaledFile journal = makeJournaledFile(userId); FileOutputStream fstream = null; try { Loading Loading @@ -3379,6 +3397,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub IoUtils.closeQuietly(fstream); journal.rollback(); } t.traceEnd(); } Loading Loading
core/java/android/service/wallpaper/WallpaperService.java +54 −12 Original line number Diff line number Diff line Loading @@ -578,6 +578,7 @@ public abstract class WallpaperService extends Service { */ public void reportEngineShown(boolean waitForEngineShown) { if (mIWallpaperEngine.mShownReported) return; Trace.beginSection("WPMS.reportEngineShown-" + waitForEngineShown); Log.d(TAG, "reportEngineShown: shouldWait=" + waitForEngineShown); if (!waitForEngineShown) { Message message = mCaller.obtainMessage(MSG_REPORT_SHOWN); Loading @@ -590,6 +591,7 @@ public abstract class WallpaperService extends Service { mCaller.sendMessageDelayed(message, TimeUnit.SECONDS.toMillis(5)); } } Trace.endSection(); } /** Loading Loading @@ -1259,7 +1261,9 @@ public abstract class WallpaperService extends Service { didSurface = true; if (DEBUG) Log.v(TAG, "onSurfaceCreated(" + mSurfaceHolder + "): " + this); Trace.beginSection("WPMS.Engine.onSurfaceCreated"); onSurfaceCreated(mSurfaceHolder); Trace.endSection(); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); if (callbacks != null) { for (SurfaceHolder.Callback c : callbacks) { Loading @@ -1285,8 +1289,10 @@ public abstract class WallpaperService extends Service { + ", " + mCurWidth + ", " + mCurHeight + "): " + this); didSurface = true; Trace.beginSection("WPMS.Engine.onSurfaceChanged"); onSurfaceChanged(mSurfaceHolder, mFormat, mCurWidth, mCurHeight); Trace.endSection(); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); if (callbacks != null) { for (SurfaceHolder.Callback c : callbacks) { Loading @@ -1303,11 +1309,15 @@ public abstract class WallpaperService extends Service { if (DEBUG) { Log.v(TAG, "dispatching insets=" + windowInsets); } Trace.beginSection("WPMS.Engine.onApplyWindowInsets"); onApplyWindowInsets(windowInsets); Trace.endSection(); } if (redrawNeeded) { Trace.beginSection("WPMS.Engine.onSurfaceRedrawNeeded"); onSurfaceRedrawNeeded(mSurfaceHolder); Trace.endSection(); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); if (callbacks != null) { for (SurfaceHolder.Callback c : callbacks) { Loading @@ -1332,11 +1342,15 @@ public abstract class WallpaperService extends Service { // the state to get them to notice. if (DEBUG) Log.v(TAG, "onVisibilityChanged(true) at surface: " + this); Trace.beginSection("WPMS.Engine.onVisibilityChanged-true"); onVisibilityChanged(true); Trace.endSection(); } if (DEBUG) Log.v(TAG, "onVisibilityChanged(false) at surface: " + this); Trace.beginSection("WPMS.Engine.onVisibilityChanged-false"); onVisibilityChanged(false); Trace.endSection(); } } finally { mIsCreating = false; Loading Loading @@ -1422,12 +1436,16 @@ public abstract class WallpaperService extends Service { mDisplayInstallOrientation = mDisplay.getInstallOrientation(); if (DEBUG) Log.v(TAG, "onCreate(): " + this); Trace.beginSection("WPMS.Engine.onCreate"); onCreate(mSurfaceHolder); Trace.endSection(); mInitializing = false; mReportedVisible = false; Trace.beginSection("WPMS.Engine.updateSurface"); updateSurface(false, false, false); Trace.endSection(); } /** Loading Loading @@ -2237,14 +2255,15 @@ public abstract class WallpaperService extends Service { public void reportShown() { if (!mShownReported) { mShownReported = true; Trace.beginSection("WPMS.mConnection.engineShown"); try { mConnection.engineShown(this); Log.d(TAG, "Wallpaper has updated the surface:" + mWallpaperManager.getWallpaperInfo()); } catch (RemoteException e) { Log.w(TAG, "Wallpaper host disappeared", e); return; } Trace.endSection(); } } Loading Loading @@ -2286,6 +2305,27 @@ public abstract class WallpaperService extends Service { return mEngine == null ? null : SurfaceControl.mirrorSurface(mEngine.mSurfaceControl); } private void doAttachEngine() { Trace.beginSection("WPMS.onCreateEngine"); Engine engine = onCreateEngine(); Trace.endSection(); mEngine = engine; Trace.beginSection("WPMS.mConnection.attachEngine-" + mDisplayId); try { mConnection.attachEngine(this, mDisplayId); } catch (RemoteException e) { engine.detach(); Log.w(TAG, "Wallpaper host disappeared", e); return; } finally { Trace.endSection(); } mActiveEngines.add(engine); Trace.beginSection("WPMS.engine.attach"); engine.attach(this); Trace.endSection(); } private void doDetachEngine() { mActiveEngines.remove(mEngine); mEngine.detach(); Loading @@ -2311,21 +2351,15 @@ public abstract class WallpaperService extends Service { } switch (message.what) { case DO_ATTACH: { Engine engine = onCreateEngine(); mEngine = engine; try { mConnection.attachEngine(this, mDisplayId); } catch (RemoteException e) { engine.detach(); Log.w(TAG, "Wallpaper host disappeared", e); return; } mActiveEngines.add(engine); engine.attach(this); Trace.beginSection("WPMS.DO_ATTACH"); doAttachEngine(); Trace.endSection(); return; } case DO_DETACH: { Trace.beginSection("WPMS.DO_DETACH"); doDetachEngine(); Trace.endSection(); return; } case DO_SET_DESIRED_SIZE: { Loading Loading @@ -2406,7 +2440,9 @@ public abstract class WallpaperService extends Service { } } break; case MSG_REPORT_SHOWN: { Trace.beginSection("WPMS.MSG_REPORT_SHOWN"); reportShown(); Trace.endSection(); } break; default : Log.w(TAG, "Unknown message type " + message.what); Loading @@ -2430,8 +2466,10 @@ public abstract class WallpaperService extends Service { public void attach(IWallpaperConnection conn, IBinder windowToken, int windowType, boolean isPreview, int reqWidth, int reqHeight, Rect padding, int displayId, @SetWallpaperFlags int which) { Trace.beginSection("WPMS.ServiceWrapper.attach"); mEngineWrapper = new IWallpaperEngineWrapper(mTarget, conn, windowToken, windowType, isPreview, reqWidth, reqHeight, padding, displayId); Trace.endSection(); } @Override Loading @@ -2442,16 +2480,20 @@ public abstract class WallpaperService extends Service { @Override public void onCreate() { Trace.beginSection("WPMS.onCreate"); super.onCreate(); Trace.endSection(); } @Override public void onDestroy() { Trace.beginSection("WPMS.onDestroy"); super.onDestroy(); for (int i=0; i<mActiveEngines.size(); i++) { mActiveEngines.get(i).detach(); } mActiveEngines.clear(); Trace.endSection(); } /** Loading
services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +19 −0 Original line number Diff line number Diff line Loading @@ -1157,6 +1157,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Slog.w(TAG, "WallpaperService is not connected yet"); return; } TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.connectLocked-" + wallpaper.wallpaperComponent); if (DEBUG) Slog.v(TAG, "Adding window token: " + mToken); mWindowManagerInternal.addWindowToken(mToken, TYPE_WALLPAPER, mDisplayId, null /* options */); Loading @@ -1173,6 +1175,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub false /* fromUser */, wallpaper, null /* reply */); } } t.traceEnd(); } void disconnectLocked() { Loading Loading @@ -1322,6 +1325,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub @Override public void onServiceConnected(ComponentName name, IBinder service) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.onServiceConnected-" + name); synchronized (mLock) { if (mWallpaper.connection == this) { mService = IWallpaperService.Stub.asInterface(service); Loading @@ -1337,6 +1342,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub mContext.getMainThreadHandler().removeCallbacks(mTryToRebindRunnable); } } t.traceEnd(); } @Override Loading Loading @@ -1544,6 +1550,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub public void engineShown(IWallpaperEngine engine) { synchronized (mLock) { if (mReply != null) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.mReply.sendResult"); final long ident = Binder.clearCallingIdentity(); try { mReply.sendResult(null); Loading @@ -1551,6 +1559,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Binder.restoreCallingIdentity(ident); Slog.d(TAG, "failed to send callback!", e); } t.traceEnd(); mReply = null; } } Loading Loading @@ -3049,6 +3058,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return true; } TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.bindWallpaperComponentLocked-" + componentName); try { if (componentName == null) { componentName = mDefaultWallpaperComponent; Loading Loading @@ -3181,6 +3192,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } Slog.w(TAG, msg); return false; } finally { t.traceEnd(); } return true; } Loading Loading @@ -3225,7 +3238,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } private void attachServiceLocked(WallpaperConnection conn, WallpaperData wallpaper) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.attachServiceLocked"); conn.forEachDisplayConnector(connector-> connector.connectLocked(conn, wallpaper)); t.traceEnd(); } private void notifyCallbacksLocked(WallpaperData wallpaper) { Loading Loading @@ -3351,6 +3367,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } void saveSettingsLocked(int userId) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); t.traceBegin("WPMS.saveSettingsLocked-" + userId); JournaledFile journal = makeJournaledFile(userId); FileOutputStream fstream = null; try { Loading Loading @@ -3379,6 +3397,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub IoUtils.closeQuietly(fstream); journal.rollback(); } t.traceEnd(); } Loading