History log of /frameworks/base/core/java/android/view/ThreadedRenderer.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0997908c95151ce24609c10731990e648156b95d 19-Apr-2016 Dimitry Ivanov <dimitry@google.com> Move Vulkan layer path setup to ApplicationLoaders

ThreadedRenderer was never the right place for this anyway, and
ApplicationLoaders can provide both the full library search path (not
just the extracted native library dir) as well as the application loader
namespace.

Bug: 28213888
Change-Id: Ibcc0a9178da4dba6f3f3105932fdac1a1d0261af
/frameworks/base/core/java/android/view/ThreadedRenderer.java
e85ce990fe7bfa33d6b7d8bfd23b7336096466b9 10-May-2016 Jorim Jaggi <jjaggi@google.com> Don't stage content drawn bounds

It's certainly not needed for two up, so remove the staging aspect.

Freeform resizing is currently broken because of another bug so this
can't be tested, but because we are not "shipping" it in any case
fixing the 2-up bug is more important, but it shouldn't break freeform
anyways.

Bug: 28618501
Change-Id: I6f285a714281fde50fd7328a3f8999cfa8dfb2c5
/frameworks/base/core/java/android/view/ThreadedRenderer.java
e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1 25-Apr-2016 John Reck <jreck@google.com> API tweaks to PixelCopy and make it public

Bug: 27708453
Change-Id: I81667ce42f9ca1c1a13e1e61299927900845fc84
/frameworks/base/core/java/android/view/ThreadedRenderer.java
9a17da8125c36c82ba73e7f4b3ed80b9c633767f 18-Apr-2016 John Reck <jreck@google.com> Don't reuse LOST_SURFACE for stopped

Fixes: 28218991

If a draw() happens while we are stopped, don't report
that the surface is lost because this will prompt
a tear-down of the surface which isn't desired. It can
result in ViewRootImpl ending up in an internally-bad state
in this case.

Change-Id: If3eb8c6bc8702299e5330bc0917952624dce3b7e
/frameworks/base/core/java/android/view/ThreadedRenderer.java
8afcc76920499d0a384dba1470c5a377f80ed768 13-Apr-2016 John Reck <jreck@google.com> Revert "Revert "Make stopped state a first-class thing""

This reverts commit eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399.

Fixes first-frame issue, mReportNextDraw needs to override
mStopped

Fixes: 28118961
Fixes: 27286867

Change-Id: I5c811759637d08ba9f3b342016d1b3006986d5a2
/frameworks/base/core/java/android/view/ThreadedRenderer.java
d2eec0efb2e47b23b2a12ab2967e422f0be49094 12-Apr-2016 John Reck <jreck@google.com> Merge "Framework-side of SurfaceView#getBitmap" into nyc-dev
10dd0585c11dcedb5a271d54e645594f1d215d5c 01-Apr-2016 John Reck <jreck@google.com> Framework-side of SurfaceView#getBitmap

Bug: 27708453

Change-Id: Ie6fd7eca522d3e6549d8af587c975fd7e6053649
/frameworks/base/core/java/android/view/ThreadedRenderer.java
825fa4d5ae7b2907ee1769d09e6333306de2a92e 11-Apr-2016 John Reck <jreck@google.com> Merge "Revert "Make stopped state a first-class thing"" into nyc-dev
eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399 11-Apr-2016 John Reck <jreck@google.com> Revert "Make stopped state a first-class thing"

This reverts commit 945961f78a78eced823d5ba78505c781b079703d.

Change-Id: Iebc1d49fac33380233f8785fc39bec6c30a5e714
/frameworks/base/core/java/android/view/ThreadedRenderer.java
c724dcf23c5e2ebd22c042a8a6f2424b7e9d5029 08-Apr-2016 John Reck <jreck@google.com> Merge "Make stopped state a first-class thing" into nyc-dev
945961f78a78eced823d5ba78505c781b079703d 08-Apr-2016 John Reck <jreck@google.com> Make stopped state a first-class thing

Bug: 27286867

WindowManager has committed to stopped state
controlling the lifecycle of the Surface, so
make that a first-class thing in HWUI as well.

This makes it more resistent to things like
a rogue updateSurface() happening while mStopped=true,
leading to bad things down the line. Instead let
the surface be changed/updated as often as desired,
and just block any attempt to draw on that surface.

Also removes some unnecessary makeCurrent()s, as
EglManager ensures that we *always* have a valid
GL context now (using a pbuffer surface if there is
no window surface set)

Change-Id: Iead78ddebc7997e8fdb0c9534836352f5e54b9bd
/frameworks/base/core/java/android/view/ThreadedRenderer.java
51f2d606dcbfba3cc5b03dfea37c1304b91c232f 06-Apr-2016 John Reck <jreck@google.com> Fix some edge cases

Bug: 27709981

This desperately needs a refactor, but to keep
the current (really needed & nice) behavior of
dispatching after sync finishes would be difficult
to handle cleanly without lots of ripping so... #yolo

Change-Id: I831a06c6ae7412a062720d68ecbe3085190f0258
/frameworks/base/core/java/android/view/ThreadedRenderer.java
44b49f070aafe8ad44efae87341121cce49ff11c 25-Mar-2016 John Reck <jreck@google.com> Add a callback for rendernode parentcount=0

Bug: 27709981
Fixes: 22565656

Change-Id: I1cb4461baf9069dc4e7ca6de10d5862578c107f4
/frameworks/base/core/java/android/view/ThreadedRenderer.java
350e65206cfbd86484fcfda77bb988e270606dda 19-Feb-2016 Doris Liu <tianliu@google.com> End staging animators when destroy RootRenderNode

When animation happens in a dialog, it is possible for the dialog to
be dismissed and RootRenderNode to be destroyed before we create
animation handle for the staged animators. In that case, we need
to remove the staged animators so they will not run without a
animation handle.

Bug: 26975079
Change-Id: I0c2c6c1b530beaec3984c0b1c410df4fd8f25c95
/frameworks/base/core/java/android/view/ThreadedRenderer.java
910beb8f5d9042163e2ad0dbb744d9f147db9604 03-Feb-2016 Andres Morales <anmorales@google.com> updates to FrameStatsObserver API

- Rename to FrameMetrics to avoid collision with existing
android.view.FrameStats class
- Make FrameMetricsObserver implementation detail,
exposing FrameMetricsListener interface as public API
and wrapping in FrameStatsObserver to maintain state
- Remove dropped frame count call, in favor of passing as
parameter to callback method.
- Move away from raw timestamp access in favor of Metric IDs
which represent higher-level, more stable stages in a frame
lifecycle and match the categories exposed in the onscreen
bars.
- Support many-to-many Window<->FrameMetricsListener relationship

Change-Id: I00e741d664d4c868b1b6d0131a23f8316bd8c5c2
/frameworks/base/core/java/android/view/ThreadedRenderer.java
03d8f76836c5950374bc9030a78706d25ac233e9 31-Jan-2016 Michael Lentine <mlentine@google.com> Adding plumbing for passing the lib directory.

Added call in handleBindApplication which will pass the library path into
HardwareRender which then passes it to libvulkan through ThreadedRenderer's
jni interface.

Change-Id: I7dc1fec9c7a1566716a4501a0d5697ea94e57b53
/frameworks/base/core/java/android/view/ThreadedRenderer.java
06f5bc70a667a02b14e31d3f53f91d3661e30666 16-Dec-2015 Andres Morales <anmorales@google.com> expose hwui frame stats through FrameStatsObserver

Change-Id: I88884bafc8e2f6d7f67a36d3609490e83cf8afd5
/frameworks/base/core/java/android/view/ThreadedRenderer.java
bf4b31f7b23b0bc7a2ed4fc779aac37c9c486eb2 16-Dec-2015 John Reck <jreck@google.com> resolve merge conflicts of 04ce46db64 to master.

Change-Id: I935bb47718f0e7d5fb48945dd8de6e28dac136e5
0bcd0cb6b1193168fa2840855195347488daab9e 04-Dec-2015 Thomas Buhot <thomas.buhot@intel.com> libhwui: make setSurface asynchronous

On the critical path of the cold launch of applications
the main thread of the started application tells the RenderThread
to create a surface. This process is synchronous and blocks
the main thread of the application until the creation
of the EGLContext is complete.
As a consequence the launch time of the application is delayed
by time spent allocating the EGL Context in the RenderThread.

With this optimization the launch time of any application
is improved (for example settings by 20 to 40 ms).

Change-Id: Ibf47aaa0abb8dedf7aa00693073db3785d9d6b08
Signed-off-by: Thomas Buhot <thomas.buhot@intel.com>
Signed-off-by: Zhiquan Liu <zhiquan.liu@intel.com>
/frameworks/base/core/java/android/view/ThreadedRenderer.java
51aaf906f9f5fb2f117f5ccfae8be6974f7cb903 03-Dec-2015 John Reck <jreck@google.com> Nuke HardwareRenderer abstract base

Bug: 17303292

Change-Id: I4a272ea4f695f4f9993e8be640fdd8530b691be0
/frameworks/base/core/java/android/view/ThreadedRenderer.java
b816087962aba0019b022303330f03b897b580ed 22-Sep-2015 Skuhne <skuhne@google.com> Rendering the window frame with a second thread

Using a multi threaded render node to render the window frame
asynchronously from the application relayout.

Bug: 22527834
Bug: 24400680
Bug: 24459827
Bug: 24409773
Bug: 24537510
Change-Id: I1010fc6a8b6e38424178140afa3ca124433ab7e4
/frameworks/base/core/java/android/view/ThreadedRenderer.java
ea7a7fb75acb7305eb774ca7bc7e96103bd49323 28-Aug-2015 Skuhne <skuhne@google.com> MultiThreaded rendering of different renderNodes

This is adding the renderer side infrastructure to allow
rendering multiple render nodes with different threads.
This is a pre-step for decoupling a non client decor
resize reder from a content resize render.

Multiple render nodes can be added to be drawn, and to
prevent overdrawing, a content bounds area can be set

Bug: 22527834

Change-Id: Ie7271e20895bf38957e5a84aeefc883e282039ad
/frameworks/base/core/java/android/view/ThreadedRenderer.java
e248bd1b2c3fcf8088429507e73b31f45ee2544b 05-Aug-2015 John Reck <jreck@google.com> Serializing display lists

This is a WIP prototype

Change-Id: Id4bfcf2b7bf905221c3734b7b6887c9b2efd37e6
/frameworks/base/core/java/android/view/ThreadedRenderer.java
828698b012e3c317073c0dbbe323d06fe9954af4 30-Jun-2015 John Reck <jreck@google.com> Make querying the graphics stats service more defensive

Bug: 21750734

Doesn't fix the underlying issue that we were unable to
get a buffer but as this is non-critical be more defensive
about failures.

Change-Id: I7f2faaa35b064e3d0da0a13dba9aae3c226b9acc
/frameworks/base/core/java/android/view/ThreadedRenderer.java
63005e6e5b1ee6d32a217ce8b4d8f0d13987fc39 20-May-2015 John Reck <jreck@google.com> Reduce wasted buffer allocations

Bug: 20170924

Don't pre-allocate buffers if there is a SurfaceView or other
View that has requested transparent regions. This doesn't fully
address the problem of allocating buffers when there's a full
screen SurfaceView but it at least gets back to KitKat levels
of only having 1 wasted buffer instead of 3 (the 1 being
a result of the fact that it will still draw one frame of emptiness
forcing a buffer dequeue).

Change-Id: Ied9553186bc7b111d180b63f87b92bd317cb4b97
/frameworks/base/core/java/android/view/ThreadedRenderer.java
50210d912925aef14e4ce69be82e4949122a3cd9 15-May-2015 Alan Viverette <alanv@google.com> Adjust light source for window position

Bug: 16523629
Change-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf
/frameworks/base/core/java/android/view/ThreadedRenderer.java
2507c34d91bb0d722b6012e85cb47387b2aa6873 04-May-2015 Chris Craik <ccraik@google.com> Cleanup properties

bug:19967854

Separate properties from Caches, into static, RenderThread-only class.

Also rewrites the means for java to set properties to correctly handle
threading, and adds an override for profile bars so that SysUi doesn't clutter
the screen with them.

Change-Id: I6e21a96065f52b9ecc49d1a126244804ba106fa9
/frameworks/base/core/java/android/view/ThreadedRenderer.java
1641c0cb0b6baf313c82846fe4f64007078c604f 04-May-2015 John Reck <jreck@google.com> Merge "Move AssetAtlas off of SkBitmap*" into mnc-dev
c6e2e8ff474ae44bab5b9eb665851118abd27b68 15-Apr-2015 John Reck <jreck@google.com> Move AssetAtlas off of SkBitmap*

Switched to SkPixelRef*

Change-Id: I4a1d9dc6c55c1ebcce6b0b8c585e69559e523898
/frameworks/base/core/java/android/view/ThreadedRenderer.java
31a2d063df5111e730abe7d07be064690deedc34 01-May-2015 Chris Craik <ccraik@google.com> Revert "Revert "Merge getDisplayList and updateDisplayListIfDirty""

Fixes breakage from HwAccelerationTest

This reverts commit b2847afde24aac22c8fb804cdce0c24b8a7c40c4.

Change-Id: I762b3c9020fc1d06bac61ffa8b956049147515b1
/frameworks/base/core/java/android/view/ThreadedRenderer.java
5c705c595d6adbb4b6e8ad5dee29205246cd5cc4 01-May-2015 Chris Craik <ccraik@google.com> Merge "Fix build." into mnc-dev
b2847afde24aac22c8fb804cdce0c24b8a7c40c4 01-May-2015 Chris Craik <ccraik@google.com> Fix build.

Revert "Merge getDisplayList and updateDisplayListIfDirty"

This reverts commit f85d064b536d9b2028a83e21d98eac9b40b74e95.

Change-Id: I8b1566aba67c385d72759ea2aea16edcd8477813
/frameworks/base/core/java/android/view/ThreadedRenderer.java
f4ff8f701f8127ad9e187a30e9407375695a4b62 01-May-2015 Chris Craik <ccraik@google.com> Merge "Merge getDisplayList and updateDisplayListIfDirty" into mnc-dev
f85d064b536d9b2028a83e21d98eac9b40b74e95 01-May-2015 Chris Craik <ccraik@google.com> Merge getDisplayList and updateDisplayListIfDirty

bug:17767704

Change-Id: I5dffc0fa343d5d67d5fe59c78eca77bb8645ce0e
/frameworks/base/core/java/android/view/ThreadedRenderer.java
3731dc220ed457e0f1e99d7ec2589e0a43872b59 14-Apr-2015 John Reck <jreck@google.com> A bunch more cleanups

Switch a few places to using android::canvas
instead of SkCanvas as well which eliminated
some JNI

Change-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc
/frameworks/base/core/java/android/view/ThreadedRenderer.java
9d4efdf2802f06ccf7031610891f75af70ea5538 17-Apr-2015 John Reck <jreck@google.com> Revert "A bunch more cleanups"

This reverts commit c294d128d03bc9a9982b273a82516c04583438cc.

Change-Id: Id1ebb236950f7c36c6d86e1dd95566d3a200748d
/frameworks/base/core/java/android/view/ThreadedRenderer.java
7809f835cae637c12eebdc92103ad88890228d97 17-Apr-2015 John Reck <jreck@google.com> Revert "Move AssetAtlas off of SkBitmap*"

This reverts commit 87ffb63d90fb6dd2689fe72dcb24fda9a6156220.

Change-Id: I92adfcee454a0a19020cdd9e96a134be0ee529aa
/frameworks/base/core/java/android/view/ThreadedRenderer.java
87ffb63d90fb6dd2689fe72dcb24fda9a6156220 15-Apr-2015 John Reck <jreck@google.com> Move AssetAtlas off of SkBitmap*

Switched to SkPixelRef*

Change-Id: I4a1d9dc6c55c1ebcce6b0b8c585e69559e523898
/frameworks/base/core/java/android/view/ThreadedRenderer.java
c294d128d03bc9a9982b273a82516c04583438cc 14-Apr-2015 John Reck <jreck@google.com> A bunch more cleanups

Switch a few places to using android::canvas
instead of SkCanvas as well which eliminated
some JNI

Change-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc
/frameworks/base/core/java/android/view/ThreadedRenderer.java
edc524c90506d80e0fc5fb67e8de7b8f3ef53439 18-Mar-2015 John Reck <jreck@google.com> Add GraphicsStatsService

More S's for More Speed

Split JankTracker's backing data from the
class to allow for data relocation to/from ashmem regions

Pack the jank tracking data to fit in 256 bytes

Change-Id: Ife86a64b71a328fbd0c8075fe6a0404e081f725b
/frameworks/base/core/java/android/view/ThreadedRenderer.java
43c410eaacf7d287c6c3f5621e6e0b96501004dc 18-Mar-2015 Chris Craik <ccraik@google.com> Merge "Remove HardwareCanvas"
b36016c65f1d1b5846dba0349aab491dbd3a746a 11-Mar-2015 John Reck <jreck@google.com> Cleanups & simplifications

Change-Id: I5ad5e3b8fe55b1528f2e20c63e5abe51d9e40ff1
/frameworks/base/core/java/android/view/ThreadedRenderer.java
f6829a0a618b4523619ec53c996b04d67e3186b9 10-Mar-2015 Chris Craik <ccraik@google.com> Remove HardwareCanvas

Change-Id: I239646a7f00f09d3f76fe6b6162eed86bc0d6e77
/frameworks/base/core/java/android/view/ThreadedRenderer.java
f4faeac3525fe1ce3707ab785a1651aec367589d 05-Mar-2015 John Reck <jreck@google.com> Cleanup Bitmap JNI attempt #2

Original version missed a spot

This reverts commit c02977e3bbfaaedcb1b1d67e1692becc7dddd59b.

Change-Id: I56244ce10d709fcdef42a001fe4c6ba7b6bbb04d
/frameworks/base/core/java/android/view/ThreadedRenderer.java
c02977e3bbfaaedcb1b1d67e1692becc7dddd59b 05-Mar-2015 Chad Jones <chadj@google.com> Revert "Cleanup Bitmap JNI"

This reverts commit b2915245b74b3b5541b123e38403f8e26426b4b7.

Change-Id: Idd7d7f33eec4ea5024c83de6b10d3d1a6ab2b17a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
b2915245b74b3b5541b123e38403f8e26426b4b7 04-Mar-2015 John Reck <jreck@google.com> Cleanup Bitmap JNI

Fix a bunch of places where mNativeBitmap was being
poked at directly, switch them either to the NDK API
or to GraphicsJNI where it made sense

Change-Id: I6b3df3712d6497cba828c2d3012e725cb4ebb64d
/frameworks/base/core/java/android/view/ThreadedRenderer.java
ba6adf66d3c44c0aa2fd8a224862ff1901d64300 19-Feb-2015 John Reck <jreck@google.com> Initial attempt at jank-tracking stat collection

Is a bit naive, perhaps overly aggressive, but sorta works

Change-Id: I01a774e00dbe681439c02557d9728ae43c45ce50
/frameworks/base/core/java/android/view/ThreadedRenderer.java
dad7d84c04c5954b63ea8bb58c52b2291f44b4df 09-Dec-2014 John Reck <jreck@google.com> Teach AssetAtlas about more drawables

Bug: 18317479

Change-Id: I16868ee204d24af72af9a2efc987f7e9eb1d266b
/frameworks/base/core/java/android/view/ThreadedRenderer.java
01a5ea35fbba4c5bb1d7790ae1677a2fa752e042 03-Dec-2014 John Reck <jreck@google.com> Resume RT-animations after a pauseSurface

Bug: 18203577

The issue occurs as a result of performTraversals() both doing
a window relayout call *and* early-returning because it's not dirty.

To fix this pauseSurface() returns whether or not the RT-side is
"dirty" to force ViewRootImpl to do a draw even if mDirty is
otherwise empty.

Change-Id: I534f367e75d18d273ebf14df3927f5c464ef6bef
/frameworks/base/core/java/android/view/ThreadedRenderer.java
83fb64e8ec4c6bc0930f50b24bd1c36a81f6a1c2 21-Nov-2014 John Reck <jreck@google.com> Merge "If the surface is lost, release it" into lmp-mr1-dev
b13de07f0b26953115f4315bc7417ca87c70594b 20-Nov-2014 John Reck <jreck@google.com> If the surface is lost, release it

Bug: 18403246

Surface#isValid() is used throughout ViewRootImpl to
determine Surface validity. However, this will return true
until Surface#release() is called, even if the underlying
BufferQueue is abandoned. We have a very strong signal
from EGL that the Surface is now dead, so use that signal
to call Surface#release() so ViewRootImpl's isValid() usage
will be valid.

Change-Id: Ib355560ef4ca7625c3c784174863d2d55267d93d
/frameworks/base/core/java/android/view/ThreadedRenderer.java
70850ea258cbf91477efa57a1f1a23cc0044cc93 18-Nov-2014 Chris Craik <ccraik@google.com> Improve logging around performance critical events

bug:17702227

Add details useful to developers (such as layer size/View name), and
switch away from logging implementation names/details, since they
are generally not relevant to developers.

Change-Id: Iee605d182f241450f7e75a6d0c283d51fa1312f5
/frameworks/base/core/java/android/view/ThreadedRenderer.java
aa95a88327d9a3ac8a4a00b065b78ac0f28b3a19 07-Nov-2014 John Reck <jreck@google.com> Have an actual fallback if the surface is lost

Bug: 17516789

This will force a relayout/reinitialize pass if the Surface
is lost mid-render instead of crashing on the next frame

Change-Id: If08bfa16f740728fa7c05904fa11e26f07b81e2e
/frameworks/base/core/java/android/view/ThreadedRenderer.java
3aa1ffbc75e39b8e53b64256775ea917ca0c6bee 30-Oct-2014 Alan Viverette <alanv@google.com> Fix inset check in ThreadedRenderer

BUG: 17729606
Change-Id: I9303a788968b424fd8ca27fe4bb99bab51ec34a7
/frameworks/base/core/java/android/view/ThreadedRenderer.java
23d307c8d88f4a3849163b9e5b7cd11d0d4f372c 27-Oct-2014 John Reck <jreck@google.com> Cleanup debug options

Bug: 18138852
Bug: 18065434
Change-Id: Ibb07b73b147c2a8b287fe8aee3f6624582f21b00
/frameworks/base/core/java/android/view/ThreadedRenderer.java
749906b468912dab7bf69a86e852deac3e80b0cc 04-Oct-2014 John Reck <jreck@google.com> Cleanup DeferredLayerUpdater

Bug: 17765082

DeferredLayerUpdater had fallen behind RT updates. Re-snap to
latest expectations, ensuring to call requireGlContext() prior
to detachSurfaceTexture to avoid leaking SurfaceTextures

Change-Id: Ic65fb9831e5284f658866da8da9ad5af1d227699
/frameworks/base/core/java/android/view/ThreadedRenderer.java
61375a8bb5e112d4e79ee4240699ffe7e3f4c8e5 18-Sep-2014 John Reck <jreck@google.com> Revert "Make starting window hw-accelerated"

Bug: 17516789

This change corresponds to a sudden influx of bad surface crashes.
Reverting to see if stability returns as this was an optimization
CL

This reverts commit 29ff1bc57ac2c995c56f15ed6e56e5fb247b2a44.

Change-Id: I7835e89017161d94ad05fe46d81bd437c3dae3a7
/frameworks/base/core/java/android/view/ThreadedRenderer.java
4f52b3420684e85252a7341d906e47145855b6ec 11-Sep-2014 Chet Haase <chet@google.com> Make starting window hw-accelerated

An earlier fix in L disabled hw acceleration for the starting window
after the system process became hw accelerated. This was done to preserve
the old behavior of the starting window having some default behavior
(in particular, being filled with a default color). However, this ends up
being a memory and performance problem on some platforms (memory because
some platforms have backing store for software surfaces, performance
because it takes far longer to create a screen-size software surface than
a hardware surface).

The fix is to allow the starting window to inherit the hw acceleration
behavior of its process, and to detect when we are drawing the contents
of that starting window and to fill it with a default color (black).

Issue #17443449 use hardware rendering for app preview window

Change-Id: I8be8111d9e38c51fbbc07185acca065815ce26dc
/frameworks/base/core/java/android/view/ThreadedRenderer.java
17035b0211a3c9d45ea46a99217a6acbe76e8fbe 03-Sep-2014 John Reck <jreck@google.com> Have destroy call freePrefetchedLayers

Bug: 17208461

There's a potential race condition between HardwareRenderer.destroy()
being called (which calls destroyCanvasAndSurface()) and the renderer
being finalized (which is what calls freePrefetchedLayers), during which
time it's possible we get a TRIM_MEMORY_COMPLETE and destroy the EGL
context.

Fix this race condition by moving stopDrawing() and freePrefetchedLayers()
into destroyCanvasAndSurface() where they should have been in the first
place.

Also, if we hit the assertion failure, dump the current state of
Caches to try and provide more context for the failure.

Change-Id: Ife0ba3562041e8b08e87e3e13640472b3004eed6
/frameworks/base/core/java/android/view/ThreadedRenderer.java
abedca398334236f9f03b5af04c58d4bb00a1247 29-Aug-2014 Chris Craik <ccraik@google.com> Support Z reorder/shadows in root render node

bug:17310188
Change-Id: If2281218c458cf767d79b4d81944e2c8a23ca32c
/frameworks/base/core/java/android/view/ThreadedRenderer.java
4c5a27b5f667ebc7cb2b188655820ad3fddedb52 28-Aug-2014 John Reck <jreck@google.com> Merge "Animator stuff" into lmp-dev
119907cd2575c56b1ebf66348b52e67aaf6a88d8 14-Aug-2014 John Reck <jreck@google.com> Animator stuff

Bug: 17228458

Change-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d
/frameworks/base/core/java/android/view/ThreadedRenderer.java
ed6f14a20c69da3d221cc1acbaa31e74e837917c 26-Aug-2014 Alan Viverette <alanv@google.com> Make shadow alpha properties public, add lighting values for TV

BUG: 17189722
BUG: 17221975
Change-Id: I4ed477b658fec96ce69fa278f67345dab6bacaa3
/frameworks/base/core/java/android/view/ThreadedRenderer.java
3e8249568cc428296ac76c7ddce3f0382d40fe5b 20-Aug-2014 John Reck <jreck@google.com> Implement full View.buildLayer

Bug: 17152292

Change-Id: Ia3cc2aadf72fe14517f50762fc634794df51ad5a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
dbed893ba88b76f88ea51d8666653458955cdc67 07-Aug-2014 Alan Viverette <alanv@google.com> Preserve surface insets when view layout is updated

Also makes canvas save & restore in threaded renderer a little safer.

BUG: 16654228
Change-Id: Ie0d49450ed408cffd0b859c08e524b6f904c77ca
/frameworks/base/core/java/android/view/ThreadedRenderer.java
058fc640017c90120c599d378a4cbc55668b05b7 24-Jul-2014 Chris Craik <ccraik@google.com> Connect shadow style attributes to renderer

bug:15859361

Moves lighting info out of StatefulBaseRenderer, since it's not useful
at record time, and only used by OGLR.

Change-Id: I7ab065d02d9304afad1dc4c48597a7a621366f8e
/frameworks/base/core/java/android/view/ThreadedRenderer.java
514a8b88f7a57fd348dde193ee9ced0403deebd4 17-Jul-2014 John Reck <jreck@google.com> Merge "Fix root RenderNode damage calculation" into lmp-dev
0a97330b98dd633b58dcfff405d94476c89e867d 16-Jul-2014 John Reck <jreck@google.com> Fix root RenderNode damage calculation

Bug: 15888445

Change-Id: I281ec9271c9889673dcdfcb6d31e341a7b47b7de
/frameworks/base/core/java/android/view/ThreadedRenderer.java
57774a82f02c225941f81cf89c7a03bf899df2c1 16-Jul-2014 Alan Viverette <alanv@google.com> Ensure surfaces with insets aren't rendered as opaque

BUG: 16312821
Change-Id: Ie3012c34712b7bf91a2086a6b8c922d0ebfff2e6
/frameworks/base/core/java/android/view/ThreadedRenderer.java
58c42c3596a2b79184c9a6b7beffc6e94cce112c 13-Jul-2014 Alan Viverette <alanv@google.com> Specify light and shadow properties in theme

BUG: 15859361
Change-Id: I65c9aa8c7ad7a709504c879d96158efba040d3ce
/frameworks/base/core/java/android/view/ThreadedRenderer.java
ccb11e183763db5cbaca96abe461adf480ed8e44 09-Jul-2014 Alan Viverette <alanv@google.com> Add API for specifying popup window shadows and shadow insets

BUG: 14569120
BUG: 13211941

Change-Id: Ia21596b25a0471344d42d59377074f67fce00042
/frameworks/base/core/java/android/view/ThreadedRenderer.java
83601538918620e63f5a765d3eaab3a63494b454 08-Jul-2014 John Reck <jreck@google.com> Revert "Fix destroyHardwareResources"

This reverts commit bac48c4d0c6f71f67074a430cd365ea2e15924b8.

Change-Id: Iba8b729d5e91ca31976fc2bdf9c1dd5fdb19de9a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
ec0c92548071801c81e02ca72b9864739e1c080c 08-Jul-2014 John Reck <jreck@google.com> Fix destroyHardwareResources

The UI thread needs to know whether or not the display list is
valid, so bring back View.destroyHardwareResources and instead
have the native side assert that View did the right thing

Change-Id: I4f8dee6e9c13ec7ab520becdc5cfe20e92a76f8f
/frameworks/base/core/java/android/view/ThreadedRenderer.java
d907e5b1efeae51c302fd502f42a06bd16d6cae3 01-Jul-2014 John Reck <jreck@google.com> Merge "Fix onTrimMemory for HardwareRenderer"
f47a594f5250b1914c36423ee6b371f0b8db09d0 01-Jul-2014 John Reck <jreck@google.com> Fix onTrimMemory for HardwareRenderer

Also fixes detachFunctor possibly drawing after return

Bug: 15189843
Bug: 15990672

Change-Id: I64c48cb674c461a8eeaba407b697e09f72c98ce3
/frameworks/base/core/java/android/view/ThreadedRenderer.java
918ad523b2780e0c893f3d2a32d4ec13f2a7e921 27-Jun-2014 John Reck <jreck@google.com> More cleanups

Change-Id: Id5967944b949a2aec57e4fe9fdcdc04c11b8c35a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
f74930be6037b858f956093ce1b45bd7b6c1e48a 30-Jun-2014 Dan Stoza <stoza@google.com> Merge "Surface: Add allocateBuffers to avoid render delay"
cd028f336e36b22dbe8cf623eb5bd2361314495c 24-Jun-2014 John Reck <jreck@google.com> Fix contants; RT-enable WebView pt2

Bug: 15838537

* Fix kSync_UIRedrawRequired constant value (woops)
* Tell CanvasContext that WebView is now rt-safe

Change-Id: Idf15cf21115c2ca24b8ccd00025e8502864cd87c
/frameworks/base/core/java/android/view/ThreadedRenderer.java
5795d6408d8bf44ffe2f49a25f9f333069b59a49 20-Jun-2014 Dan Stoza <stoza@google.com> Surface: Add allocateBuffers to avoid render delay

This plumbs up a new call on the native Surface object that allows
the client to request that BufferQueue pre-allocate all of the buffers
that it might need for rendering. This hopefully prevents allocation
delays during dequeuing and reduces jank.

Bug: 11792166
Change-Id: Ibeaa7475492d4ac2bcacb107ef60c6240081d8b7
/frameworks/base/core/java/android/view/ThreadedRenderer.java
3b20251a355c88193c439f928a84ae69483fb488 23-Jun-2014 John Reck <jreck@google.com> No-fail invokeFunctor

Bug: 15513308
Bug: 15449247

Change-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c
/frameworks/base/core/java/android/view/ThreadedRenderer.java
a7090e0cfd7c719a6d4c03aae34f5db98754cbdd 21-Jun-2014 Chris Craik <ccraik@google.com> Update 'DisplayList' vs 'RenderNode' naming in several places

Change-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287
/frameworks/base/core/java/android/view/ThreadedRenderer.java
b8802b1293c05a14399005aeaeb93b82ec2e2f27 17-Jun-2014 John Reck <jreck@google.com> Add atlas map pointer validation

Bug: 15425820

This just prevents the crash, it's still unclear how bad pointers
are getting into the map in the first place

Change-Id: I3acffaae09548ec48973035b7fcf5f35606bad60
/frameworks/base/core/java/android/view/ThreadedRenderer.java
25fbb3fa1138675379102a44405852555cefccbd 12-Jun-2014 John Reck <jreck@google.com> Move LayerType to RenderNode

Change-Id: Icb79a5015cb0362b1f3a66d09007450730135a97
/frameworks/base/core/java/android/view/ThreadedRenderer.java
e4267ea4f20740c37c01bfb6aefcf61fddc4566a 04-Jun-2014 John Reck <jreck@google.com> Even FASTER damage calculations!

* Now with more native!
* Less matrix math thanks to bulk-property-update support!
* Zero JNI on the View.damageInParent() path!
* Fully aware of RT-driven animators!
* Likely full of new and exciting bugs!
* But it also fixes at least 1 existing invalidate bug!

Change-Id: Ie0773f85a60850ff2668370c58defef2e8aa079f
/frameworks/base/core/java/android/view/ThreadedRenderer.java
84a4c887a07c1c2939443f4e0587d7f1ac109e4b 30-May-2014 John Reck <jreck@google.com> Remove GLRenderer

Change-Id: I180286417c1a354fc7eb1eadb1884ac6add0795c
/frameworks/base/core/java/android/view/ThreadedRenderer.java
d72e0a339b54af0c4e731513bbad120dff694723 30-May-2014 John Reck <jreck@google.com> Re-jigger layers

Bug: 15185239
Bug: 15238382

Make DeferredLayerUpdater ref counted so that
HardwareLayer:finalizer() works non-crashily on
leaked layers
Give DeferredLayerUpdater the ability to have a layer destroyer
set so that leaked layers can still be recycled on the
RenderThread
Order layer updates based off of pushLayerUpdate() calls to fix
issue with nested layers

Change-Id: I4449cee607f7e5126e02fed7464cf48038e3dfdf
/frameworks/base/core/java/android/view/ThreadedRenderer.java
fe5e7b7346a54537b980796ceeca66bfdbd05561 24-May-2014 John Reck <jreck@google.com> Enable debug stuffs

Bug: 14596762
* dumpsys gfxinfo implemented
* profile GPU visual_bars implemented

Change-Id: Icb948a9d5af5989b5615504d0d76ade64b93ef5b
/frameworks/base/core/java/android/view/ThreadedRenderer.java
e1628b7c6fc3822fa83cf02028ce8ad67abb0afe 24-May-2014 John Reck <jreck@google.com> Implement FlushCaches TODO

Change-Id: Id05429e98ffe0858275b32c41fb215c1d8d930b2
/frameworks/base/core/java/android/view/ThreadedRenderer.java
a5dda645da738da7b4ae15e28fa7d93d3b04b94f 23-May-2014 John Reck <jreck@google.com> Bag of scheduling tweaks

Bug: 15118640

* Prevent over-stuffing the queue by dropping frames
* Prevent double-drawing in one pulse by RT by deferring
vsync registration until post-draw so that it catches
the next vsync pulse instead of the current one
* Bias vsync race condition towards the UI thread
* Fix queueDelay to actually work

Change-Id: Ibf584258bd93ebcbba058bd976dc8b307f1c6155
/frameworks/base/core/java/android/view/ThreadedRenderer.java
797b95b26bbb7557678af78b9a2a61830158920f 21-May-2014 Chris Craik <ccraik@google.com> Define light position (using new lighting spec) in Java

Also updates the relative shadow strengths.

Change-Id: I6cac7275d38df98aea9f0dda463cd7207102986a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
86faf9ec3edc24a9d04548e151bca3a2510396a4 19-May-2014 John Reck <jreck@google.com> Workaround double-translate bug

Bug: 15065005

Change-Id: Ie0f77c6ea13eebf3508df7513b79efaa65d31de0
/frameworks/base/core/java/android/view/ThreadedRenderer.java
d5b2ec4ff15f828298290534c9d322c82f8d130c 18-May-2014 Alan Viverette <alanv@google.com> Fix onHardwarePreDraw call in ThreadedRenderer

Change-Id: Ia3852cbd7afc21e9f57824e9f207ba02acae12a7
/frameworks/base/core/java/android/view/ThreadedRenderer.java
66f0be65a1046f54ddce0498b242c1fa0776b1ea 13-May-2014 John Reck <jreck@google.com> Wire up texture atlas

Bug: 14590563

Change-Id: I2dffbc089dc801f5fb2d1c8fd38e1c71d160e110
/frameworks/base/core/java/android/view/ThreadedRenderer.java
315c329544d7c593d1072b071cbb92d9afe74021 10-May-2014 John Reck <jreck@google.com> Add TimeInterpolator support to RNA

Bug: 14678626

Change-Id: I6554e7fcd42c49fac3618ca792083bb68e358f55
/frameworks/base/core/java/android/view/ThreadedRenderer.java
ef27453cf71e331e4076df5e5c665b06d5c3e050 07-May-2014 John Reck <jreck@google.com> Merge "Cleanup attachFunctor"
832b151465ed81c43e59891d5eebe62128b21fbb 07-May-2014 John Reck <jreck@google.com> Cleanup attachFunctor

Bug: 13961296

Change-Id: Id48d11bfcc234afd1fd7e4fdd409a50e7208c81d
/frameworks/base/core/java/android/view/ThreadedRenderer.java
63a06673253914510bbeebd500655008682dade1 07-May-2014 John Reck <jreck@google.com> Implement TODO(romainguy)

Bug: 14277445

Change-Id: Id52d6f7fcc023000adcc440bd4da67d9a673536b
/frameworks/base/core/java/android/view/ThreadedRenderer.java
e4280baaa709c74d86cf6a389a4674ca665f5af6 06-May-2014 John Reck <jreck@google.com> Implement loadSystemProperties

Bug: 14087580

Change-Id: I7153f38c70b554a78c56a0e794da929fc401ee7a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
f9be77940e365036fecd8cc0e491e8545c34e79b 03-May-2014 John Reck <jreck@google.com> Make RenderNodeAnimator and WebView play nice

Change-Id: Ifaefcf510b2d377663fc86f60608d6ec9be8329a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
18f16e6fba74eda173e1e7c869e6e2e2acc073ff 03-May-2014 John Reck <jreck@google.com> TIME LORD!

Bug: 14444180

Change-Id: I68bec3807c4d1c88d5af1aec2fe6907d60b5f2f3
/frameworks/base/core/java/android/view/ThreadedRenderer.java
e45b1fd03b524d2b57cc6c222d89076a31a08bea 15-Apr-2014 John Reck <jreck@google.com> RenderThread animator support

Change-Id: Icf29098edfdaf7ed550bbe9d49e9eaefb4167084
/frameworks/base/core/java/android/view/ThreadedRenderer.java
ae738a7a45d710115f8aedacf218d4bfa0b25698 28-Apr-2014 Bo Liu <boliu@google.com> Add invokeFunctor call to ViewRootImpl

BUG: 13961296

Change-Id: Ief8eea0b4c79a64ea76d75daaec176f1b8438581
/frameworks/base/core/java/android/view/ThreadedRenderer.java
05e858400adee0f579b1e27e321b48bd55843fbd 23-Apr-2014 John Reck <jreck@google.com> Add missing try/finallys

Change-Id: I32be65f5a46768449f26b69f72f502acd1e72769
/frameworks/base/core/java/android/view/ThreadedRenderer.java
6313b9259d37b59f3402058e197637aa3014516c 17-Apr-2014 John Reck <jreck@google.com> Clear mIgnoreDirtyState after draw

Change-Id: I6dfb39e0ebc9a5732678d735d9bc5e8813926096
/frameworks/base/core/java/android/view/ThreadedRenderer.java
fae904d63947fe1687d1d44be29234cc3d538f24 14-Apr-2014 John Reck <jreck@google.com> Fence on destruction

Bug: 14052927
destroyCanvasAndSurface() needs a fence as when it returns the
underlying BufferQueue is going to be released from under
the render thread.

Change-Id: I0147a1d5ec5adf0239c761ef22f65cd8c8a137df
/frameworks/base/core/java/android/view/ThreadedRenderer.java
bc0cc0220b830df54c8ed41d0b53daffd7f6c991 12-Apr-2014 John Reck <jreck@google.com> Support onHardwarePostDraw in ThreadedRenderer

Bug: 13958485

Change-Id: Ie9c7af7cee582850a7f0a3d891aa3685c230cfc7
/frameworks/base/core/java/android/view/ThreadedRenderer.java
d3d8dafc2f61fb118c060720b52684c59303f3db 11-Apr-2014 John Reck <jreck@google.com> Make attachFunctor blocking

Bug: 13930200

Change-Id: I9b0cf92fd16bb30baa09b6f8d7ae22a8b2a7fd80
/frameworks/base/core/java/android/view/ThreadedRenderer.java
8e1f918738abf70a4dc86dbb12b386a9deea37f8 10-Apr-2014 John Reck <jreck@google.com> Merge "Switch DisplayListData to a staging model"
8de65a8e05285df52a1e6f0c1d5616dd233298a7 10-Apr-2014 John Reck <jreck@google.com> Switch DisplayListData to a staging model

Bug: 13912977

Change-Id: I5b2f664e797be22a58300964f57ceb4fab60528c
/frameworks/base/core/java/android/view/ThreadedRenderer.java
f7d9c1dc84671d4e99657ef071d275700d85bb11 09-Apr-2014 John Reck <jreck@google.com> Fix ThreadedRenderer.setEnabled()

Bug: 13914116
Fixes lifecycle issues around setEnabled where ThreadedRenderer
was reporting as being enabled before it had a Surface. This is
incorrect.

Also fix some EGL lifecycle issues

Change-Id: I12ebb279707f9b533a570b61d68735d858b560bf
/frameworks/base/core/java/android/view/ThreadedRenderer.java
0ed751dd22a98f0c1f637570c5775b4f5e97d895 08-Apr-2014 John Reck <jreck@google.com> Don't make HardwareRenderer calls in the finalizer

Bug: 13902530
Don't try to set the RenderNode's displayListData to 0 in the finalizer.
The HardwareRenderer may have already been finalized and it's not valid
to make calls into HardwareRenderer from another thread anyway.

The fix is that now that RenderNode is a refcounted object, this step
can be skipped entirely. The RenderNode destructor handles deleting
its DisplayListData if it needs to.

Change-Id: Ieab75575b98c24678a531dd5aa41a2d0afde0eef
/frameworks/base/core/java/android/view/ThreadedRenderer.java
28ad7b52e038ef0cdd89f753d9839444a434b299 08-Apr-2014 John Reck <jreck@google.com> Fence on draws that are reported

Change-Id: Ib2ec16cbda40f40df1710bdc868869ea8301f17e
/frameworks/base/core/java/android/view/ThreadedRenderer.java
0d1f634f4b5e1bb37aa51777efb6a68619488d01 29-Mar-2014 John Reck <jreck@google.com> Add invokeFunctor

Change-Id: I09e675d3e02e3e528642175ada00b2b17fab7652
/frameworks/base/core/java/android/view/ThreadedRenderer.java
f666ad7046c0b1b255835f75aeb7d1391067df93 15-Mar-2014 John Reck <jreck@google.com> Rename DisplayList->RenderNode

Change-Id: Idcca6f26ba6282594789962f5edb3ed53a290fef
/frameworks/base/core/java/android/view/ThreadedRenderer.java
be34f2f3b340196426bdf558b28951359a4d84fa 10-Mar-2014 John Reck <jreck@google.com> DisplayList lifecycle changes

Bug: 13360343
Change DisplayList to be more forgiving with weaker lifecycle
requirements. Is more self-managed with a strong reference
to the renderer it needs

Also fix naming mismatch

Change-Id: I5c89453a72a52954f6f959f0846199705dbb6476
/frameworks/base/core/java/android/view/ThreadedRenderer.java
44fd8d24f761f82d21e9b00932648a1b6bf91449 26-Feb-2014 John Reck <jreck@google.com> DisplayList overhaul

Change-Id: I53418d580c98f706e971545cff81b9921c12cc5f
/frameworks/base/core/java/android/view/ThreadedRenderer.java
19b6bcfd83eb7fb92ebd06d2fec89e308311f1d0 15-Feb-2014 John Reck <jreck@google.com> Support HardwareLayers in RenderThread

Also has a few HardwareLayer lifecycle fixes

Change-Id: I6308cb05f8f199eed72189ace768013a46815941
/frameworks/base/core/java/android/view/ThreadedRenderer.java
fc53ef27793a39e9effd829e9cae02a9ca14147e 11-Feb-2014 John Reck <jreck@google.com> Implement missing safelyRun() on ThreadedRenderer

Change-Id: I14b75f37a13fabaa759a51369190dbdc84087c4b
/frameworks/base/core/java/android/view/ThreadedRenderer.java
04fc583c3dd3144bc6b718fcac4b3e1afdfdb067 06-Feb-2014 John Reck <jreck@google.com> Refactor HardwareLayer

Defer all the things!
Groundwork to allow hardware layers to work in a renderthread world

Change-Id: Ib3aa47525f393083621254a743dbaa6352f933bd
/frameworks/base/core/java/android/view/ThreadedRenderer.java
36bef0bf30d6bae48cf3837df351075ca4fce654 20-Jan-2014 Ashok Bhat <ashok.bhat@arm.com> AArch64: Make graphics classes 64-bit compatible

This a merger of two commits submitted to AOSP by
the following authors:

ashok.bhat@arm.com, david.butcher@arm.coma
craig.barber@arm.com, kevin.petit@arm.com and
marcus.oakland@arm.com

Due to the very large number of internal conflicts, I
have chosen to cherry-pick this change instead
of letting it merge through AOSP because the merge
conflict resolution would be very hard to review.

Commit messages below:

================================================
AArch64: Make graphics classes 64-bit compatible

Changes in this patch include

[x] Long is used to store native pointers as they can
be 64-bit.

[x] Some minor changes have been done to conform with
standard JNI practice (e.g. use of jint instead of int
in JNI function prototypes)

[x] AssetAtlasManager is not completely 64-bit compatible
yet. Specifically mAtlasMap member has to be converted
to hold native pointer using long. Added a TODO to
AssetAtlasManager.java to indicate the change required.

Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>

==================================================================

AArch64: Use long for pointers in graphics/Camera

For storing pointers, long is used in
android/graphics/Camera class, as native
pointers can be 64-bit.

In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use of
jint instead of int in JNI function prototypes)

Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>

===================================================================

Change-Id: Id5793fa0ebc17ee8b1eecf4b3f327977fdccff71
/frameworks/base/core/java/android/view/ThreadedRenderer.java
4f02bf4eef6af47f35c70c4dda5b7b9523d89ca0 04-Jan-2014 John Reck <jreck@google.com> Native-side proxy

Remove RemoteGLRenderer
Remove reflection-based control

Change-Id: If17c2bbb61c7141986d88c4763def77ed1074985
/frameworks/base/core/java/android/view/ThreadedRenderer.java
3dfe19f72cbd95b201e89376ae1810c5c9229b00 13-Dec-2013 John Reck <jreck@google.com> Add drawGlFunctor support to RenderThread

Add gl functor to the prototype support to allow
webview team to begin playing with RT

Also create RemoteGLRenderer to avoid needing to make
breaking changes to GLRenderer. Currently the differences
are mainly around mFunctorsRunnable and how it queues itself up

Change-Id: I1ca39056189b68cd7b8dded4dd5889d331f6660a
/frameworks/base/core/java/android/view/ThreadedRenderer.java
cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fc 05-Nov-2013 John Reck <jreck@google.com> RenderThread work

Hacky prototype needs a private API to enable

Change-Id: I21e0ddf3cdbd38a4036354b5d6012449e1a34849
/frameworks/base/core/java/android/view/ThreadedRenderer.java