Home | History | Annotate | Download | only in server

Lines Matching defs:wallpaper

58 import android.service.wallpaper.IWallpaperConnection;
59 import android.service.wallpaper.IWallpaperEngine;
60 import android.service.wallpaper.IWallpaperService;
61 import android.service.wallpaper.WallpaperService;
94 * Minimum time between crashes of a wallpaper service for us to consider
95 * restarting it vs. just reverting to the static wallpaper.
98 static final String WALLPAPER = "wallpaper";
109 * Observes the wallpaper for changes and notifies all IWallpaperServiceCallbacks
110 * that the wallpaper has changed. The CREATE is triggered when there is no
111 * wallpaper set and is created for the first time. The CLOSE_WRITE is triggered
112 * everytime the wallpaper is changed.
120 public WallpaperObserver(WallpaperData wallpaper) {
121 super(getWallpaperDir(wallpaper.userId).getAbsolutePath(),
123 mWallpaperDir = getWallpaperDir(wallpaper.userId);
124 mWallpaper = wallpaper;
125 mWallpaperFile = new File(mWallpaperDir, WALLPAPER);
134 // changing the wallpaper means we'll need to back up the new one
174 * Client is currently writing a new image wallpaper.
179 * Resource name if using a picture from the wallpaper gallery
184 * The component name of the currently set live wallpaper.
189 * The component name of the wallpaper that should be set next.
199 * List of callbacks registered they should each be notified when the wallpaper is changed.
209 wallpaperFile = new File(getWallpaperDir(userId), WALLPAPER);
222 public WallpaperConnection(WallpaperInfo info, WallpaperData wallpaper) {
224 mWallpaper = wallpaper;
249 Slog.w(TAG, "Wallpaper service gone: " + mWallpaper.wallpaperComponent);
254 Slog.w(TAG, "Reverting to built-in wallpaper!");
301 WallpaperData wallpaper = mWallpaperMap.get(mCurrentUserId);
302 if (wallpaper != null) {
303 if (wallpaper.wallpaperComponent != null
304 && wallpaper.wallpaperComponent.getPackageName().equals(packageName)) {
305 wallpaper.wallpaperUpdating = false;
306 ComponentName comp = wallpaper.wallpaperComponent;
307 clearWallpaperComponentLocked(wallpaper);
309 wallpaper, null)) {
310 Slog.w(TAG, "Wallpaper no longer available; reverting to default");
311 clearWallpaperLocked(false, wallpaper.userId, null);
324 WallpaperData wallpaper = mWallpaperMap.get(mCurrentUserId);
325 if (wallpaper != null) {
326 if (wallpaper.wallpaperComponent == null
327 || !wallpaper.wallpaperComponent.getPackageName().equals(packageName)) {
330 doPackagesChangedLocked(true, wallpaper);
341 WallpaperData wallpaper = mWallpaperMap.get(mCurrentUserId);
342 if (wallpaper != null) {
343 if (wallpaper.wallpaperComponent != null
344 && wallpaper.wallpaperComponent.getPackageName().equals(packageName)) {
345 wallpaper.wallpaperUpdating = true;
358 WallpaperData wallpaper = mWallpaperMap.get(mCurrentUserId);
359 if (wallpaper != null) {
360 boolean res = doPackagesChangedLocked(doit, wallpaper);
373 WallpaperData wallpaper = mWallpaperMap.get(mCurrentUserId);
374 if (wallpaper != null) {
375 doPackagesChangedLocked(true, wallpaper);
380 boolean doPackagesChangedLocked(boolean doit, WallpaperData wallpaper) {
382 if (wallpaper.wallpaperComponent != null) {
383 int change = isPackageDisappearing(wallpaper.wallpaperComponent
389 Slog.w(TAG, "Wallpaper uninstalled, removing: "
390 + wallpaper.wallpaperComponent);
391 clearWallpaperLocked(false, wallpaper.userId, null);
395 if (wallpaper.nextWallpaperComponent != null) {
396 int change = isPackageDisappearing(wallpaper.nextWallpaperComponent
400 wallpaper.nextWallpaperComponent = null;
403 if (wallpaper.wallpaperComponent != null
404 && isPackageModified(wallpaper.wallpaperComponent.getPackageName())) {
407 wallpaper.wallpaperComponent, 0);
409 Slog.w(TAG, "Wallpaper component gone, removing: "
410 + wallpaper.wallpaperComponent);
411 clearWallpaperLocked(false, wallpaper.userId, null);
414 if (wallpaper.nextWallpaperComponent != null
415 && isPackageModified(wallpaper.nextWallpaperComponent.getPackageName())) {
418 wallpaper.nextWallpaperComponent, 0);
420 wallpaper.nextWallpaperComponent = null;
447 WallpaperData wallpaper = mWallpaperMap.valueAt(i);
448 wallpaper.wallpaperObserver.stopWatching();
454 WallpaperData wallpaper = mWallpaperMap.get(UserHandle.USER_OWNER);
455 switchWallpaper(wallpaper, null);
456 wallpaper.wallpaperObserver = new WallpaperObserver(wallpaper);
457 wallpaper.wallpaperObserver.startWatching();
506 WallpaperData wallpaper = mWallpaperMap.get(userId);
507 if (wallpaper != null) {
508 if (wallpaper.wallpaperObserver != null) {
509 wallpaper.wallpaperObserver.stopWatching();
510 wallpaper.wallpaperObserver = null;
521 File wallpaperFile = new File(getWallpaperDir(userId), WALLPAPER);
531 WallpaperData wallpaper = mWallpaperMap.get(userId);
532 if (wallpaper == null) {
533 wallpaper = new WallpaperData(userId);
534 mWallpaperMap.put(userId, wallpaper);
537 // Not started watching yet, in case wallpaper data was loaded for other reasons.
538 if (wallpaper.wallpaperObserver == null) {
539 wallpaper.wallpaperObserver = new WallpaperObserver(wallpaper);
540 wallpaper.wallpaperObserver.startWatching();
542 switchWallpaper(wallpaper, reply);
546 void switchWallpaper(WallpaperData wallpaper, IRemoteCallback reply) {
550 ComponentName cname = wallpaper.wallpaperComponent != null ?
551 wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent;
552 if (bindWallpaperComponentLocked(cname, true, false, wallpaper, reply)) {
558 Slog.w(TAG, "Failure starting previous wallpaper", e);
559 clearWallpaperLocked(false, wallpaper.userId, reply);
571 WallpaperData wallpaper = mWallpaperMap.get(userId);
572 File f = new File(getWallpaperDir(userId), WALLPAPER);
579 wallpaper.imageWallpaperPending = false;
583 : null, true, false, wallpaper, reply)) {
592 // This can happen if the default wallpaper component doesn't
595 // wallpaper.
596 Slog.e(TAG, "Default wallpaper component not found!", e);
597 clearWallpaperComponentLocked(wallpaper);
618 // User hasn't started yet, so load her settings to peek at the wallpaper
634 WallpaperData wallpaper = mWallpaperMap.get(userId);
635 if (wallpaper == null) {
636 throw new IllegalStateException("Wallpaper not yet initialized for user " + userId);
642 if (width != wallpaper.width || height != wallpaper.height) {
643 wallpaper.width = width;
644 wallpaper.height = height;
645 saveSettingsLocked(wallpaper);
647 if (wallpaper.connection != null) {
648 if (wallpaper.connection.mEngine != null) {
650 wallpaper.connection.mEngine.setDesiredSize(
654 notifyCallbacksLocked(wallpaper);
663 WallpaperData wallpaper = mWallpaperMap.get(UserHandle.getCallingUserId());
664 return wallpaper.width;
670 WallpaperData wallpaper = mWallpaperMap.get(UserHandle.getCallingUserId());
671 return wallpaper.height;
678 // This returns the current user's wallpaper, if called by a system service. Else it
679 // returns the wallpaper for the calling user.
687 WallpaperData wallpaper = mWallpaperMap.get(wallpaperUserId);
690 outParams.putInt("width", wallpaper.width);
691 outParams.putInt("height", wallpaper.height);
693 wallpaper.callbacks.register(cb);
694 File f = new File(getWallpaperDir(wallpaperUserId), WALLPAPER);
701 Slog.w(TAG, "Error getting wallpaper", e);
710 WallpaperData wallpaper = mWallpaperMap.get(userId);
711 if (wallpaper.connection != null) {
712 return wallpaper.connection.mInfo;
723 WallpaperData wallpaper = mWallpaperMap.get(userId);
724 if (wallpaper == null) {
725 throw new IllegalStateException("Wallpaper not yet initialized for user " + userId);
729 ParcelFileDescriptor pfd = updateWallpaperBitmapLocked(name, wallpaper);
731 wallpaper.imageWallpaperPending = true;
740 ParcelFileDescriptor updateWallpaperBitmapLocked(String name, WallpaperData wallpaper) {
743 File dir = getWallpaperDir(wallpaper.userId);
751 File file = new File(dir, WALLPAPER);
757 wallpaper.name = name;
760 Slog.w(TAG, "Error setting wallpaper", e);
770 WallpaperData wallpaper = mWallpaperMap.get(userId);
771 if (wallpaper == null) {
772 throw new IllegalStateException("Wallpaper not yet initialized for user " + userId);
776 wallpaper.imageWallpaperPending = false;
777 bindWallpaperComponentLocked(name, false, true, wallpaper, null);
785 boolean fromUser, WallpaperData wallpaper, IRemoteCallback reply) {
789 if (wallpaper.connection != null) {
790 if (wallpaper.wallpaperComponent == null) {
793 // Still using default wallpaper.
796 } else if (wallpaper.wallpaperComponent.equals(componentName)) {
797 // Changing to same wallpaper.
798 if (DEBUG) Slog.v(TAG, "same wallpaper");
809 // See if there is a default wallpaper component specified
811 if (DEBUG) Slog.v(TAG, "Use default component wallpaper:" + componentName);
814 // Fall back to static image wallpaper
818 if (DEBUG) Slog.v(TAG, "Using image wallpaper");
821 int serviceUserId = wallpaper.userId;
839 // Make sure the selected service is actually a wallpaper service.
867 String msg = "Selected service is not a wallpaper: "
879 WallpaperConnection newConn = new WallpaperConnection(wi, wallpaper);
898 if (wallpaper.userId == mCurrentUserId && mLastWallpaper != null) {
901 wallpaper.wallpaperComponent = componentName;
902 wallpaper.connection = newConn;
903 wallpaper.lastDiedTime = SystemClock.uptimeMillis();
906 if (wallpaper.userId == mCurrentUserId) {
911 mLastWallpaper = wallpaper;
926 void detachWallpaperLocked(WallpaperData wallpaper) {
927 if (wallpaper.connection != null) {
928 if (wallpaper.connection.mReply != null) {
930 wallpaper.connection.mReply.sendResult(null);
933 wallpaper.connection.mReply = null;
935 if (wallpaper.connection.mEngine != null) {
937 wallpaper.connection.mEngine.destroy();
941 mContext.unbindService(wallpaper.connection);
944 Slog.v(TAG, "Removing window token: " + wallpaper.connection.mToken);
945 mIWindowManager.removeWindowToken(wallpaper.connection.mToken);
948 wallpaper.connection.mService = null;
949 wallpaper.connection.mEngine = null;
950 wallpaper.connection = null;
954 void clearWallpaperComponentLocked(WallpaperData wallpaper) {
955 wallpaper.wallpaperComponent = null;
956 detachWallpaperLocked(wallpaper);
959 void attachServiceLocked(WallpaperConnection conn, WallpaperData wallpaper) {
963 wallpaper.width, wallpaper.height);
965 Slog.w(TAG, "Failed attaching wallpaper; clearing", e);
966 if (!wallpaper.wallpaperUpdating) {
967 bindWallpaperComponentLocked(null, false, false, wallpaper, null);
972 private void notifyCallbacksLocked(WallpaperData wallpaper) {
973 final int n = wallpaper.callbacks.beginBroadcast();
976 wallpaper.callbacks.getBroadcastItem(i).onWallpaperChanged();
983 wallpaper.callbacks.finishBroadcast();
1000 private void saveSettingsLocked(WallpaperData wallpaper) {
1001 JournaledFile journal = makeJournaledFile(wallpaper.userId);
1010 out.attribute(null, "width", Integer.toString(wallpaper.width));
1011 out.attribute(null, "height", Integer.toString(wallpaper.height));
1012 out.attribute(null, "name", wallpaper.name);
1013 if (wallpaper.wallpaperComponent != null
1014 && !wallpaper.wallpaperComponent.equals(IMAGE_WALLPAPER)) {
1016 wallpaper.wallpaperComponent.flattenToShortString());
1039 File newWallpaper = new File(getWallpaperDir(0), WALLPAPER);
1058 WallpaperData wallpaper = mWallpaperMap.get(userId);
1059 if (wallpaper == null) {
1060 wallpaper = new WallpaperData(userId);
1061 mWallpaperMap.put(userId, wallpaper);
1075 wallpaper.width = Integer.parseInt(parser.getAttributeValue(null, "width"));
1076 wallpaper.height = Integer.parseInt(parser
1078 wallpaper.name = parser.getAttributeValue(null, "name");
1080 wallpaper.nextWallpaperComponent = comp != null
1083 if (wallpaper.nextWallpaperComponent == null
1084 || "android".equals(wallpaper.nextWallpaperComponent
1086 wallpaper.nextWallpaperComponent = IMAGE_WALLPAPER;
1090 Slog.v(TAG, "mWidth:" + wallpaper.width);
1091 Slog.v(TAG, "mHeight:" + wallpaper.height);
1092 Slog.v(TAG, "mName:" + wallpaper.name);
1094 + wallpaper.nextWallpaperComponent);
1101 Slog.w(TAG, "no current wallpaper -- first boot?");
1122 wallpaper.width = -1;
1123 wallpaper.height = -1;
1124 wallpaper.name = "";
1131 if (wallpaper.width < baseSize) {
1132 wallpaper.width = baseSize;
1134 if (wallpaper.height < baseSize) {
1135 wallpaper.height = baseSize;
1144 WallpaperData wallpaper = null;
1148 wallpaper = mWallpaperMap.get(0);
1149 if (wallpaper.nextWallpaperComponent != null
1150 && !wallpaper.nextWallpaperComponent.equals(IMAGE_WALLPAPER)) {
1151 if (!bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, false, false,
1152 wallpaper, null)) {
1153 // No such live wallpaper or other failure; fall back to the default
1154 // live wallpaper (since the profile being restored indicated that the
1156 bindWallpaperComponentLocked(null, false, false, wallpaper, null);
1160 // If there's a wallpaper name, we use that. If that can't be loaded, then we
1162 if ("".equals(wallpaper.name)) {
1167 success = restoreNamedResourceLocked(wallpaper);
1171 bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, false, false,
1172 wallpaper, null);
1178 Slog.e(TAG, "Failed to restore wallpaper: '" + wallpaper.name + "'");
1179 wallpaper.name = "";
1184 saveSettingsLocked(wallpaper);
1188 boolean restoreNamedResourceLocked(WallpaperData wallpaper) {
1189 if (wallpaper.name.length() > 4 && "res:".equals(wallpaper.name.substring(0, 4))) {
1190 String resName = wallpaper.name.substring(4);
1224 if (wallpaper.wallpaperFile.exists()) {
1225 wallpaper.wallpaperFile.delete();
1227 fos = new FileOutputStream(wallpaper.wallpaperFile);
1236 Slog.v(TAG, "Restored wallpaper: " + resName);
1243 Slog.e(TAG, "IOException while restoring wallpaper ", e);
1267 pw.println("Permission Denial: can't dump wallpaper service from from pid="
1274 pw.println("Current Wallpaper Service state:");
1276 WallpaperData wallpaper = mWallpaperMap.valueAt(i);
1277 pw.println(" User " + wallpaper.userId + ":");
1279 pw.print(wallpaper.width);
1281 pw.println(wallpaper.height);
1283 pw.println(wallpaper.name);
1285 pw.println(wallpaper.wallpaperComponent);
1286 if (wallpaper.connection != null) {
1287 WallpaperConnection conn = wallpaper.connection;
1288 pw.print(" Wallpaper connection ");
1302 pw.println(wallpaper.lastDiedTime - SystemClock.uptimeMillis());