Commit Graph

51 Commits

Author SHA1 Message Date
Adrian Roos
37a69731cb am 931d3cc9: am 9f71f05b: am 1f72739a: am 57ee4b87: Merge "Fix image wallpaper size" into mnc-dev
* commit '931d3cc975bd717b62645bebcda95e56882ecdbc':
  Fix image wallpaper size
2015-07-18 00:23:46 +00:00
Adrian Roos
30a7dfa329 Fix image wallpaper size
Fixes a bug where the image wallpaper size
would not correctly update. Suspected cause
is checking the to-be-requested size against
the current surface size instead of the
requested surface size.

Also removes an unused field.

Bug: 21148936
Change-Id: Ief4585bd5aed5922337709d7ae0ca0bf948649d0
2015-07-17 12:30:37 -07:00
Adrian Roos
5d3fad8494 am c18935ec: am 2f5ed2d2: am 4a94dca1: am 7f806ec2: Merge "Dump internal state of ImageWallpaper" into mnc-dev
* commit 'c18935ecb1298c8c9a6b8204ac960ade8a4d7dec':
  Dump internal state of ImageWallpaper
2015-07-08 22:03:26 +00:00
Adrian Roos
ab6edbf8e0 Dump internal state of ImageWallpaper
Bug: 21148936
Change-Id: I09bea04594af7d3748db93d5b3a41b2209299ec2
2015-07-07 17:29:15 -07:00
Adrian Roos
f221e4b52b am 8aa14b59: am dbcf0a9e: Merge "ImageWallpaper: Atomically fetch display info" into mnc-dev
* commit '8aa14b59d360ad0140dae7a1e6ecdc6b11017ea5':
  ImageWallpaper: Atomically fetch display info
2015-06-10 01:29:13 +00:00
Adrian Roos
9b9947de5d ImageWallpaper: Atomically fetch display info
Previously we fetched rotation and dimens separately
which had the potential to cause inconsistencies.

Bug: 21440533
Change-Id: Ic537dbc01fc27af14124b1d97d4babafb6bc15f8
2015-06-09 16:48:57 -07:00
Michael Wright
da54b46289 am 75ce9397: Merge "optimize wallpaper load,avoid show black wallpaper."
* commit '75ce939756a63a63732ca8f88bd6ff0dfa682e8a':
  optimize wallpaper load,avoid show black wallpaper.
2015-05-06 23:48:00 +00:00
longyu.huang
6b53fd28e5 optimize wallpaper load,avoid show black wallpaper.
[Preconditions]
open auto-rotate

[Procedures]
1.enter Contacts app, and rotate 90 degrees to the right
2.press power key to lock screen,and unlock
3.rotare 90 degrees to the left and exit Contacts app
4.the wallpaper will be black first,then show the really wallpaper
2015-05-06 01:57:36 -07:00
John Spurlock
08c7116ab9 Remove unused imports in frameworks/base.
Change-Id: I031443de83f93eb57a98863001826671b18f3b17
2015-02-28 14:47:49 -05:00
Michael Wright
2ed0513f20 Clean up graphics resources.
Release SurfaceTexture after use in ColorFade and delete GL resources
in ImageWallpaper.

Bug: 17871993
Change-Id: I05bda03657ca502ba35b7187b6f361018f7ef687
2015-01-12 15:31:02 -08:00
Adrian Roos
2acaeda423 Fix Bitmap leaks in ImageWallpaper
Bug: 18350603
Change-Id: I42ec057cd287955dcf3c382c237806fd9d6666a7
2014-11-13 15:46:17 +00:00
Michael Wright
a810f11986 am 1e67bcec: am 263c36a1: am ade631ee: Merge "NULL previous background bitmap upon changing wallpaper"
* commit '1e67bcec505b1bfb67a83cb3d64e20c2bacf8581':
  NULL previous background bitmap upon changing wallpaper
2014-04-30 17:34:19 +00:00
Michael Wright
263c36a144 am ade631ee: Merge "NULL previous background bitmap upon changing wallpaper"
* commit 'ade631eed0df228e343f2a00db653058ff588846':
  NULL previous background bitmap upon changing wallpaper
2014-04-30 01:22:05 +00:00
Michael Jurka
3368a63c64 Change wallpaper sizing
Bug: 11997581

- ignore suggested dimensions
- when orientation changes, scale up wallpaper if
it doesn't fill the whole screen, or scale back to
original size if not necessary

Change-Id: I75b7519a105d4097bf7a35cd8af61fc40f45f8fb
(cherry picked from commit 824a4b5ea4)
2014-03-21 10:29:27 +00:00
jshe32X
7670b2bd49 NULL previous background bitmap upon changing wallpaper
Step to reproduce it on Nexus 10 with 4.4.2(KOT49H):
1. Long press on home screen.
2. Choose wallpaper from Wallpapers.
3. Select new wallpaper and set it.
4. Repeat step 1-3 several times.
See black background instead of the wallpaper.

There are two binder objects who hold reference to the
ImageWallpaper$DrawableEngine, which keeps the big chunk
bitmap from being recycled.
One is WallpaperService$IWallpaperEngineWrapper. The client
references went away slowly, maybe several minutes after
changing wallpaper. Then the finalizer has to been executed
to GC it.
The other one is WallpaperService$Engine$BaseIWindow. Don't
know who still held reference to it even after the window
was removed.
Anyway, let the bitmap be GCed first.

Change-Id: I27f6971a3edd26472b69e59b542b27fd7c8e7b90
Signed-off-by: jshe32X<jianchunx.shen@intel.com>
Signed-off-by: Guobin Zhang <guobin.zhang@intel.com>
2014-03-14 08:09:49 +08:00
Michael Jurka
824a4b5ea4 Change wallpaper sizing
- ignore suggested dimensions
- when orientation changes, scale up wallpaper if
it doesn't fill the whole screen, or scale back to
original size if not necessary

Change-Id: I75b7519a105d4097bf7a35cd8af61fc40f45f8fb
2013-12-19 15:42:50 -08:00
Michael Wright
6762a441ef Fix conditional for glClear call
Previously the call to glClear was executed when there was no
available space (i.e. space which the Bitmap would *not* be drawn in
on the background of the launcher), rather than when there was.
Inverting the checks fixes this problem.

Also, remove unnecessary Handler since the call to updateWallpapers
is done via one-way binder interface and wrapped in a synchronize
block anyways. Putting it on the Handler just put it on the main
looper of the context that created WallpaperManager, which isn't
necessary.

Change-Id: Ic7a323303ec6e354d1ef245eec3434ff7128432d
2013-10-16 13:06:18 -07:00
Michael Wright
b9fca99971 Force the wallpaper to reload when dimensions change
Currently it's possible for the home application to suggest new
wallpaper dimensions and the WallpaperService to request the bitmap
between when the new dimensions have been propagated and the old
bitmap has been forgotten. This leads to the WallpaperService
drawing a Bitmap with the old dimensions into a Surface with the new
dimensions.

By forcing the WallpaperManager to forget the old Bitmap immediately
before we reload it, we can ensure that we always have a Bitmap of
the correct size.

Bug: 10853302
Change-Id: I298ac5f3f8bcde54eeb1e45d21bf2ba3cbb618c9
2013-10-15 13:03:44 -07:00
John Spurlock
209bede6b9 Remove trailing whitespace from system ui.
Baseline existing .java files, no excuses going forward.

Change-Id: I4bd0f25bbda6f2ec832e34ef5c70d4830bf07f99
2013-07-17 12:23:27 -04:00
John Spurlock
de84f0e77e Organize the imports in systemui.
To follow android conventions, more importantly to remove the
unused.

Change-Id: I75881718e84360a579a3b02c26489ad250bc9227
2013-06-12 14:50:47 -04:00
Chet Haase
b432ef98f0 Speed up user-switching wallpaper changes
Previous work in ImageWallpaper cached the bitmap for a user
to avoid reloading it (an expensive operation on large-display devices)
when we could simply re-use it. User switching still caused a reload, however,
since the place where we cache the bitmap (ImageWallpaper) is in an instance
that is re-created on user-switch.

A simple fix is to have the ImageWallpaper stop telling the WallpaperManager
to erase its own cache of the bitmap prior to re-loading it. That step is
unnecessary, since a bitmap that is cached can be assumed to be valid. A wallpaper
change will correctly null out that cached version, so if the cached bitmap
is non-null, then we can simply use it as-is.

The fix is to remove the call to forgetLoadedWallpaper() and allow the caching
mechanism to do its job.

Issue #7986933 user switching on lock screen is slow (sometimes like molasses)

Change-Id: I447754ab85337bc8ae59b4ad6c3e6c2b30e13735
2013-04-30 15:10:51 -07:00
Chet Haase
2e417be5c4 Better fix for GL wallpaper creation
A previous fix made initializing GL work better by calling eglMakeCurrent()
prior to querying the max texture size. However, that fix worked by creating an eglSurface
earlier than we did before, which for some reason causes problems later if wallpaper creation
fails and we back off to a software solution.

This new fix creates a temporary pbuffer surface instead, which still allows us to make the
call to eglMakeCurrent() prior to querying the max texture size, but does not result in the
later canvas lock failure if the wallpaper creation fails anyway.

Issue #8319960 sluggish yakju animations over launcher

Change-Id: I394d672549260a354f03ad9fd1b9e1f9a161a371
2013-03-14 09:38:01 -07:00
Chet Haase
187e1e2fc7 Ensure wallpaper creation succeeds
ImageWallpaper was sometimes querying GL for a max texture size too early
(before the first call to eglMakeCurrent()). This problem caused the wallpaper
to then get created in software, resulting in noticeably slower performance
when the wallpaper was visible.

This fix ensures that the
makeCurrent happens before the query, ensuring that wallpapers of the right
size actually get created instead of failing due to this error at creation time.

Issue #8319960 sluggish yakju animations over launcher

Change-Id: I12a3eba9f1818bdf544691e0727fe12f7e820651
2013-03-14 06:24:32 -07:00
Romain Guy
d9731a57c6 am bf53be46: am 09353f74: Merge "Check and fail early if requested wallpaper size exceeds maximum texture size."
* commit 'bf53be46d237866a9964a4f1fa960eb6ef4a70a6':
  Check and fail early if requested wallpaper size exceeds maximum texture size.
2013-02-27 07:08:15 +00:00
Romain Guy
c8d983f725 Wallpaper software rendering fallback
Bug #8230579

If the wallpaper fails to render with OpenGL, fall back to software
rendering instead of throwing an exception and crashing the wallpaper.

Change-Id: I40ed6056e6ea09b92b6cd441f16101dcc296fb8e
2013-02-20 10:05:36 -08:00
Wim Vander Schelden
9549c067d9 Check and fail early if requested wallpaper size exceeds maximum texture size.
This fixes an issue where OpenGL initialization succeeds but buffer allocation fails because the requested wallpaper size
is too large (or otherwise unsupported) by the graphics hardware. This fixes an issue where SystemUI crashes constantly
on the PandaBoard when connected to a full HD display. Tested only on PandaBoard, no access to alternative hardware.
Signed-off-by: Wim Vander Schelden <wim.vander.schelden@philips.com>

Change-Id: I8d2e1ae9fd9772977c4e365f23f2f58bbca3787c
2013-02-14 19:16:23 +00:00
Romain Guy
3696779bca Reinitialize hardware renderer after eglTerminate()
Bug #8066455

ViewRootImpl was properly detecting that the renderer was not
ready to draw but would simply schedule another frame, thus sending
the systemui into an inifite redraw loop. This change reinitializes
the renderer if needed (if the renderer is requested but not enabled.)

This CL also fixes an issue caused by the default wallpaper. Since it
never calls eglTerminate(), managed contexts are never reclaimed.

Change-Id: Idb8caa672be8ee35f6e6a7e942d9abd8aa100967
2013-01-28 14:04:07 -08:00
Craig Mautner
b1ef36965b Refactor unused methods and unnecessary members.
ImageWallpaper runs on the main thread now and doesn't need to add
callbacks on different threads or lock against concurrent access.

Bug 7326921 fixed.

Change-Id: I6097e1dff8af743a4fb81b697efee0e02667125b
2012-11-16 17:31:04 -08:00
Chet Haase
589a6af173 Set wallpaper bitmap reference to null before reloading
Give the GC a chance to collect the current bitmap if it needs to,
as it allocates memory for the next one. This helps avoid OOM situations
that can sometimes occur in extreme circumstances (huge bitmaps)

Also set the default_wallpaper to the right default size.

Issue #7352961 Wallpaper edge is cut-off while scrolling through home page

Change-Id: If76b55061d04b29af7f66a6162e307b8b53bf4ae
2012-10-25 11:57:09 -07:00
Chet Haase
5f0d976b37 Track size changes correctly for static wallpapers
Previous logic compared the surface size to the bitmap size to determine
whether to reload the bitmap. This was based on an assumption that the bitmap
would be created at the same sizea s the surface. However, the process of
how those sizes get determined is different for surfaces and wallpapers, causing
an occasional issue where the bitmap gets reloaded frequently, every time the wallpaper
is asked to redraw, even though it always gets recreated at the same size.

New logic checks previous surface dimensions against current surface dimensions to
determine whether the bitmap should be reloaded; we really only want to reload
it when the surface size changes.

Issue #7373200 pause when toggling between All Apps and Home screen; Home button stays illuminated for a long time

Change-Id: I108777b72bd42616ad7cf8274af1b3e6b2ed94e7
2012-10-18 12:41:54 -07:00
Chet Haase
8481ac8fe9 Stop reloading wallpaper bitmap
Typo in ImageWallpaper made a dimension check incorrect.

Issue#7373200 pause when toggling between All Apps and Home screen; Home button stays illuminated for a long time

Change-Id: I82763ac8c9ed564eba904f552975ab20c8aef932
2012-10-18 10:12:10 -07:00
Chet Haase
2f20081f9f Avoid redundant wallpaper loading/drawing
Switching users causes wallpapers to get recreated 3 times. Other operations
like startup and rotation cause similar redundant load/draw operations. This change
tracks the various attributes that tell us when we really need to reload
and redraw, causing only one of these expensive operation per one of these
switches.

Issue #7334664 Wallpaper draws several times when switching users

Change-Id: Ic3072ef3a7eaf622d8632e87e34f50999f716c39
2012-10-16 13:21:04 -07:00
Romain Guy
8efca54693 Ensure we always request conformant OpenGL ES 2.0 contexts
Change-Id: I6b9d6f2dace02ad28baef6811007302b8e552a54
2012-10-15 18:09:49 -07:00
Craig Mautner
c92f150af0 Fix wallpaper not updating on initial boot.
Update the wallpaper and redraw it unconditionally when the surface
changes. Previously we were not updating the wallpaper when the
surface changed which meant that it remained at the original surface
dimensions. Also, the indication that it was visible comes in too
late to display it cleanly without jank.

Bug: 7310334 fixed.
Change-Id: Ic2ae95ea0b0704183053da1d7a906818651c62c9
2012-10-13 17:55:26 -07:00
Chet Haase
c61d70ec46 Cache wallpaper bitmap to avoid re-loading on rotation
Screen rotations force static wallpapers to get recreated. One of the things
that happens is that the underlying bitmap resource is loaded. This can be quite
expensive for large bitmaps (which is the case on large-display devices).
A simple optimization is to retain the bitmap in the wallpaper process, to avoid
this re-loading step. We still re-draw and re-upload the texture, but at least
we don't re-load the thing.

Issue #7324823 Manta wallpaper decode performance is atrocious

Change-Id: I0748e275a55992d13704a7dec5910d2dbdc9e2a4
2012-10-10 16:33:31 -07:00
Craig Mautner
fb729c7b44 Redraw static wallpapers when a redraw is needed.
Bug: 7242944
Change-Id: I913e3486de77468e73da79b4d83be3cf4f1547dd
2012-10-01 09:39:43 -07:00
Michael Jurka
881f0b1ee0 Remove unneeded imports 2012-09-05 04:44:59 -07:00
Jeff Brown
98365d7663 Refactor for multi-display support.
Split WindowManagerImpl into two parts, the WindowManager
interface implementation remains where it is but the global
communications with the window manager are now handled by
the WindowManagerGlobal class.  This change greatly simplifies
the challenge of having separate WindowManager instances
for each Context.

Removed WindowManagerImpl.getDefault().  This represents the
bulk of this change.  Most of the usages of this method were
either to perform global functions (now handled by WindowManagerGlobal)
or to obtain the default display (now handled by DisplayManager).

Explicitly associate each new window with a display and make
the Display object available to the View hierarchy.

Add stubs for some new display manager API features.

Start to split apart the concepts of display id and layer stack.
since they operate at different layers of abstraction.
While it's true that each logical display uniquely corresponds to a
surface flinger layer stack, it is not necessarily the case that
they must use the same ids.  Added Display.getLayerStack()
and started using it in places where it was relatively easy to do.

Change-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61
2012-08-19 22:42:08 -07:00
Michael Jurka
40d4676eab Remove duplicate code to update wallpaper 2012-06-21 08:41:07 -07:00
Michael Jurka
e673396387 resolved conflicts for merge of ede4d56e to jb-dev-plus-aosp
Change-Id: I8893e819f0f814a1fe1e0fb7f70dba860e889135
2012-05-17 17:13:14 -07:00
Michael Jurka
321357b606 Fix issue where static wallpaper was offset on boot
Bug: 6447391

Change-Id: Ie89bfdfd81dbf80ad7d109717f83c4bc7b42acf1
2012-05-17 15:50:51 -07:00
Jean-Baptiste Queru
e7339d804d resolved conflicts for merge of acb5f383 to jb-dev-plus-aosp
Change-Id: I79f0394b20a61dc7e6faabdb74c66277f71dfcb3
2012-05-04 19:18:00 -07:00
Jeff Sharkey
35be756030 Move SystemUI out of system UID.
Add permissions for various things it pokes.  Create new permission
to control launching non-exported activities from recents.  Hidden
API to relax WallpaperService checks.

Change-Id: I547fdcd7c213dd153ae101533ce7c56cd8f86a0d
2012-04-19 11:54:34 -07:00
SangWook Han
2b1bcca531 ImageWallpaper : get bitmap width before calc screen offset
Inside drawFrameLocked, updateWallpaperLocked() is called after
calculae drawing offset using mBackgroundWidth/Height. Because
mBackgroundWidth/Height is modified inside updateWallpaperLocked(),
it sould be called before Mbackgroundwidth/Height is used.

Many market launcher and some phone vendor launcher call
suggestDesiredDimenstions with argument (w,h) instead aosp's
original (w*2,h) for single page wallpaper. In that case, when
launcher orientation changed, ImageWallpaper does not properly
display wallpaper image and mostly you can see Black Edge at
left.

Change-Id: I93ebc4337b01f73d3154346943afa4afd6b1988a
2012-02-07 17:10:58 +09:00
Chet Haase
a8e5a2bcd6 Optimize handling of scrolled wallpapers
Swiping the home screen causes the WindowManagerService to do
a bunch of work to keep the wallpapers in sync. First, it lays out
and places all windows. Also, it notifies the SystemUI process that
the wallpaper position has changed.

The layout/place operation is too much work - we only need to set
the position values for the wallpaper, not relayout the whole system.

The notification mechanism must exist, but should be optional. Most
wallpapers don't care (especially static ImageWallpapers). So we'll
give them a new API (WallpaperService.Engine.setWantsOffsets()) to
allow wallpapers to opt out of this process and avoid the performance
overhead.

Change-Id: I66c38375438937f14f6f5550565b28eb204b1e06
2011-10-28 14:49:23 -07:00
Romain Guy
043a6b1e57 Don't use OpenGL ES 2.0 to render the wallpaper on the emulator.
Bug #5352896

The emulator doesn't support OpenGL ES 2.0.

Change-Id: I7f647d78d4d8ad87d12a5f009d5d37f6aeaecf72
2011-09-27 15:37:54 -07:00
Romain Guy
f929629e74 Fix crash with OpenGL wallpaper
Bug #5216751

Change-Id: Ieb2c0e3b29a0673a5127692c9740ba59c879a3c2
2011-08-25 17:00:39 -07:00
Erik Gilling
881fb2092b systemui: enable GL rendering of launch background
Only affect high end devices

Change-Id: I5fa2b646c2c4d4350fb4fc1042741c981ebb30bb
Signed-off-by: Erik Gilling <konkers@android.com>
2011-08-25 10:57:51 -07:00
Romain Guy
407ec78b82 Add OpenGL backend to ImageWallpaper
Bug #5204874

Currently disabled.

Change-Id: I5e7b35dce2981b0691f107e39c6394b260466543
2011-08-24 17:06:58 -07:00
Dianne Hackborn
9ea3163973 Fix issue #5108980 Wallpaper is not restored after upgrade from IRK32B to IRK33B
Take care of updating from old component name, and don't let this happen
again.

Also tweak how we switch between static wallpapers to avoid introducing
a 4MB allocation in the system UI process when this happens -- we now
stop the current wallpaper service and start a new one, so we get a
brand new surface that we can draw only one time in to.

Change-Id: I6fc8a42b8a46bba79759bd68fb7d0684b5d897b7
2011-08-05 19:22:25 -07:00