|
18 | 18 |
|
19 | 19 | import android.app.Application; |
20 | 20 | import android.content.Context; |
21 | | -import android.content.res.CompatibilityInfo; |
22 | 21 | import android.content.res.Configuration; |
23 | 22 | import android.content.res.TypedArray; |
24 | 23 | import android.graphics.PixelFormat; |
|
27 | 26 | import android.os.Bundle; |
28 | 27 | import android.os.IBinder; |
29 | 28 | import android.os.SystemProperties; |
30 | | -import android.util.Slog; |
31 | 29 | import android.view.accessibility.AccessibilityEvent; |
32 | 30 |
|
33 | 31 | /** |
@@ -119,13 +117,16 @@ public abstract class Window { |
119 | 117 | */ |
120 | 118 | public static final int ID_ANDROID_CONTENT = com.android.internal.R.id.content; |
121 | 119 |
|
| 120 | + private static final String PROPERTY_HARDWARE_UI = "persist.sys.ui.hw"; |
| 121 | + |
122 | 122 | private final Context mContext; |
123 | 123 |
|
124 | 124 | private TypedArray mWindowStyle; |
125 | 125 | private Callback mCallback; |
126 | 126 | private WindowManager mWindowManager; |
127 | 127 | private IBinder mAppToken; |
128 | 128 | private String mAppName; |
| 129 | + private boolean mHardwareAccelerated; |
129 | 130 | private Window mContainer; |
130 | 131 | private Window mActiveChild; |
131 | 132 | private boolean mIsActive = false; |
@@ -471,80 +472,63 @@ public void setWindowManager(WindowManager wm, IBinder appToken, String appName, |
471 | 472 | boolean hardwareAccelerated) { |
472 | 473 | mAppToken = appToken; |
473 | 474 | mAppName = appName; |
| 475 | + mHardwareAccelerated = hardwareAccelerated |
| 476 | + || SystemProperties.getBoolean(PROPERTY_HARDWARE_UI, false); |
474 | 477 | if (wm == null) { |
475 | 478 | wm = WindowManagerImpl.getDefault(); |
476 | 479 | } |
477 | | - mWindowManager = new LocalWindowManager(wm, hardwareAccelerated); |
| 480 | + mWindowManager = ((WindowManagerImpl)wm).makeLocal(this); |
478 | 481 | } |
479 | 482 |
|
480 | | - static CompatibilityInfoHolder getCompatInfo(Context context) { |
481 | | - Application app = (Application)context.getApplicationContext(); |
482 | | - return app != null ? app.mLoadedApk.mCompatibilityInfo : new CompatibilityInfoHolder(); |
| 483 | + CompatibilityInfoHolder getCompatibilityInfo() { |
| 484 | + Application app = (Application)mContext.getApplicationContext(); |
| 485 | + return app != null ? app.mLoadedApk.mCompatibilityInfo : null; |
483 | 486 | } |
484 | 487 |
|
485 | | - private class LocalWindowManager extends WindowManagerImpl.CompatModeWrapper { |
486 | | - private static final String PROPERTY_HARDWARE_UI = "persist.sys.ui.hw"; |
487 | | - |
488 | | - private final boolean mHardwareAccelerated; |
489 | | - |
490 | | - LocalWindowManager(WindowManager wm, boolean hardwareAccelerated) { |
491 | | - super(wm, getCompatInfo(mContext)); |
492 | | - mHardwareAccelerated = hardwareAccelerated || |
493 | | - SystemProperties.getBoolean(PROPERTY_HARDWARE_UI, false); |
494 | | - } |
495 | | - |
496 | | - public boolean isHardwareAccelerated() { |
497 | | - return mHardwareAccelerated; |
498 | | - } |
499 | | - |
500 | | - public final void addView(View view, ViewGroup.LayoutParams params) { |
501 | | - // Let this throw an exception on a bad params. |
502 | | - WindowManager.LayoutParams wp = (WindowManager.LayoutParams)params; |
503 | | - CharSequence curTitle = wp.getTitle(); |
504 | | - if (wp.type >= WindowManager.LayoutParams.FIRST_SUB_WINDOW && |
505 | | - wp.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW) { |
506 | | - if (wp.token == null) { |
507 | | - View decor = peekDecorView(); |
508 | | - if (decor != null) { |
509 | | - wp.token = decor.getWindowToken(); |
510 | | - } |
| 488 | + void adjustLayoutParamsForSubWindow(WindowManager.LayoutParams wp) { |
| 489 | + CharSequence curTitle = wp.getTitle(); |
| 490 | + if (wp.type >= WindowManager.LayoutParams.FIRST_SUB_WINDOW && |
| 491 | + wp.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW) { |
| 492 | + if (wp.token == null) { |
| 493 | + View decor = peekDecorView(); |
| 494 | + if (decor != null) { |
| 495 | + wp.token = decor.getWindowToken(); |
511 | 496 | } |
512 | | - if (curTitle == null || curTitle.length() == 0) { |
513 | | - String title; |
514 | | - if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA) { |
515 | | - title="Media"; |
516 | | - } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY) { |
517 | | - title="MediaOvr"; |
518 | | - } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_PANEL) { |
519 | | - title="Panel"; |
520 | | - } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL) { |
521 | | - title="SubPanel"; |
522 | | - } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG) { |
523 | | - title="AtchDlg"; |
524 | | - } else { |
525 | | - title=Integer.toString(wp.type); |
526 | | - } |
527 | | - if (mAppName != null) { |
528 | | - title += ":" + mAppName; |
529 | | - } |
530 | | - wp.setTitle(title); |
531 | | - } |
532 | | - } else { |
533 | | - if (wp.token == null) { |
534 | | - wp.token = mContainer == null ? mAppToken : mContainer.mAppToken; |
| 497 | + } |
| 498 | + if (curTitle == null || curTitle.length() == 0) { |
| 499 | + String title; |
| 500 | + if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA) { |
| 501 | + title="Media"; |
| 502 | + } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY) { |
| 503 | + title="MediaOvr"; |
| 504 | + } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_PANEL) { |
| 505 | + title="Panel"; |
| 506 | + } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL) { |
| 507 | + title="SubPanel"; |
| 508 | + } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG) { |
| 509 | + title="AtchDlg"; |
| 510 | + } else { |
| 511 | + title=Integer.toString(wp.type); |
535 | 512 | } |
536 | | - if ((curTitle == null || curTitle.length() == 0) |
537 | | - && mAppName != null) { |
538 | | - wp.setTitle(mAppName); |
| 513 | + if (mAppName != null) { |
| 514 | + title += ":" + mAppName; |
539 | 515 | } |
540 | | - } |
541 | | - if (wp.packageName == null) { |
542 | | - wp.packageName = mContext.getPackageName(); |
| 516 | + wp.setTitle(title); |
| 517 | + } |
| 518 | + } else { |
| 519 | + if (wp.token == null) { |
| 520 | + wp.token = mContainer == null ? mAppToken : mContainer.mAppToken; |
543 | 521 | } |
544 | | - if (mHardwareAccelerated) { |
545 | | - wp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; |
| 522 | + if ((curTitle == null || curTitle.length() == 0) |
| 523 | + && mAppName != null) { |
| 524 | + wp.setTitle(mAppName); |
546 | 525 | } |
547 | | - super.addView(view, params); |
| 526 | + } |
| 527 | + if (wp.packageName == null) { |
| 528 | + wp.packageName = mContext.getPackageName(); |
| 529 | + } |
| 530 | + if (mHardwareAccelerated) { |
| 531 | + wp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; |
548 | 532 | } |
549 | 533 | } |
550 | 534 |
|
|
0 commit comments