summaryrefslogtreecommitdiff
path: root/include/private
AgeCommit message (Collapse)Author
2016-12-14Move hwui private headers to frameworks/base/libs/hwui/private Colin Cross
hwui already exports most of its headers, move its private headers into its source directory. Bug: 33630870 Test: m -j native Change-Id: I4968d5aaaa68d9e92c826841d20f29cef349c9d8
2015-01-20Move Canvas John Reck
Change-Id: I83d557af30fc2d5c69d06eedc0f4d52ac41c4210
2015-01-05Make DisplayListRenderer inherit from Canvas, merge JNI Tom Hudson
Incrementally unify the upper layers for Skia and HWUI. Remove redundant code from GLES20Canvas.java; instead use inherited mNativeCanvasWrapper and superclass method definitions. Moves some unrelated SkPaint utility functions from Renderer to new utils/PaintUtils. bug: 15672762 Change-Id: I4ddd4214b8e9eeb95289d054ef423f2542bb5fa5
2014-12-17Make SkiaCanvas creation call ref() on SkCanvas. Leon Scroggins III
There are two callers of SkiaCanvas::create_canvas(SkCanvas*). In both cases, we were calling ref() first. It is necessary to call ref() in both cases, since we have an SkCanvas returned by SkPictureRecorder::beginRecording, which does not increment the ref count to account for the caller. (i.e. the SkPictureRecorder has the only ref until you call ref()). Rather than leave the ref up to the caller, since the SkiaCanvas does the unref(), it should also do the ref(). Update it to do so and document its behavior. Also, make SkiaCanvas' constructors explicit. Change-Id: I894d0a71a87587cf8c2b26deb2384dc49ae090ef
2014-07-24Merge "Add kModeSync" into lmp-dev Bo Liu
2014-07-24Add kModeSync John Reck
Bug: 16526750 Change-Id: I4c087160e80432739321172fd57880846c8de6e0
2014-07-25Move Canvas.h to a new location so that it can be shared with HWUI. Derek Sollenberger
Bug: 15672762 Change-Id: Ia59e986cd4034e16b2e54e8d594e6941a6c9fb1b
2014-03-28Add invokeFunctor John Reck
Change-Id: I09e675d3e02e3e528642175ada00b2b17fab7652
2014-03-28Remove kStatusInvoke & kStatusDraw John Reck
They are unused Change-Id: I44ecf1164dc6bc1b09438e733976d5a97a25f00e
2012-05-31Skip eglSwapBuffers() call when we do not draw to GL Chet Haase
The fix is to track when we issue GL drawing commands, and to skip the call to eglSwapBuffers() when a DisplayList does not result in any actual rendering calls to GL. Issue #6364143 QuickMuni list items and buttons flicker instead of fade Change-Id: I60a02c61a58c32d92481a1e814b4c8a49c6a37a3
2012-04-11Pass width/height parameters to webview Chet Haase
When webview draws into an fbo layer, it needs to know the size of that surface to create the rendering transform appropriately. This change copies in the current viewport size to the structure that is passed to the webview. Change-Id: I7160b0836d00834134c799c95a439cdc045e2035
2012-04-02Allow fine-grained control over functors execution Romain Guy
Adds non-drawing execution mode Change-Id: I82f92cf1b9a3b9ff2ca6d7427c4e02b73e04e6bf
2012-03-28Deleted the media, camera, drm related files since they are relocated James Dong
Change-Id: I9bc5573ee07e30b305b5b879023aa9ec69e10b91
2012-03-26Use a status_t return type for GL functors Romain Guy
WebView needs more fine-grained control over the behavior of the framework upon execution of the display lists. The new status_t allows WebView to requests its functor to be re-executed directly without causing a redraw of the entire hierarchy. Change-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc
2012-03-13Whitespace and indentation Glenn Kasten
Fix indentation to be multiple of 4. Make it easier to search: sp< not sp < to "switch (...)" instead of "switch(...)" (also "if" and "while") Remove redundant blank line at start or EOF. Remove whitespace at end of line. Remove extra blank lines where they don't add value. Use git diff -b or -w to verify. Change-Id: I966b7ba852faa5474be6907fb212f5e267c2874e
2012-03-07remove files that moved to frameworks/native Mathias Agopian
Change-Id: I140d291e520097b1148930f736823650e08488f7
2012-02-27fix libgui header location Mathias Agopian
Change-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe
2012-02-27libagl shouldn't export anything Mathias Agopian
Change-Id: Ia823dbc56aab2a0b8a6063df4348fe6baac124c6
2012-02-24remove dependency on android_native{s_priv|buffer}.h Mathias Agopian
Change-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89
2012-02-14Update comments Glenn Kasten
We no longer put the filename at start of file. Change-Id: Ic435b159a23105681e3d4a6cb1ac097bc853302e
2012-02-03Don't double destruct audio_track_cblk_t Glenn Kasten
Fortunately audio_track_cblk_t doesn't have a destructor, but for clarity remove the double destruction. Also add warning not to add any virtuals to audio_track_cblk_t. Change-Id: I70ebe1a70460c7002145b2cdf10f9f137396e6f3
2012-01-20Make AudioTrack control block volume field private Glenn Kasten
This is part of the process of abstracting the control block to make it easier to maintain. Change-Id: Idb8f461e68dab3bcf268159cc0781651c6fb7094
2012-01-17Track volume cleanup Glenn Kasten
Always read and write track volumes atomically. In most places this was already being done, but there were a couple places where the left and right channels were read independently. Changed constant MAX_GAIN_INT to be a uint32_t instead of a float. It is always used as a uint32_t in comparisons and assignments. Use MAX_GAIN_INT in more places. Now that volume is always accessed atomically, removed the union and alias for uint16_t volume[2], and kept only volumeLR. Removed volatile as it's meaningless. In AudioFlinger, clamp the track volumes read from shared memory before applying master and stream volume. Change-Id: If65e2b27e5bc3db5bf75540479843041b58433f0
2012-01-17Merge "Use size_t for frame size" Glenn Kasten
2012-01-13AudioTrack and AudioFlinger send level cleanup Glenn Kasten
Add an API to control block for getting/setting send level. This allow us to make the mSendLevel field private. Document the lack of barriers. Use 0.0f to initialize floating-point values (for doc only). Change-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4
2012-01-13Use size_t for frame size Glenn Kasten
except in the control block, where we don't have room. In AudioFlinger::ThreadBase::TrackBase::getBuffer, read the frame size from control block only once. Change-Id: Id6c4bccd4ed3e07d91df6bbea43bae45524f9f4e
2011-12-14Audio C++ comments Glenn Kasten
Change-Id: I84906ebb9dfcfa5b96b287d18364b407f02a30c1
2011-11-28split ComposerService out of SurfaceComposerClient.h Mathias Agopian
Change-Id: I1eb691f7ca263d5895d871ab675bb5826e0323c6
2011-08-30fix Surface positions are not floats Mathias Agopian
Added Surface.setPosition(float, float) which allows to set a surface's position in float. Bug: 5239859 Change-Id: I903aef4ad5b5999142202fb8ea30fe216d805711
2011-07-13Remove some #ifdef HAVE_ANDROID_OS that were needed for the simulator build Mike Lockwood
Change-Id: I13d9f251f86c05ae5405f37adbf6b8e9660935ba Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-29SF transactions are now O(1) wrt IPC instead of O(N). Mathias Agopian
Change-Id: I57669852cbf6aabae244ea86940a08a5a27ffc43
2011-06-13unify SurfaceTexture and Surface Mathias Agopian
Add the concept of synchronous dequeueBuffer in SurfaceTexture Implement {Surface|SurfaceTextureClient}::setSwapInterval() Add SurfaceTexture logging fix onFrameAvailable
2011-06-01Remove unnecessary level of priority indirection Glenn Kasten
Change-Id: I942d43973c20a7ace8b0d3f78b4da97e45e996c6
2011-06-01Use channel mask instead of channel count for track creation Jean-Michel Trivi
Record and playback objects (resp AudioRecord and AudioTrack) are created using a channel mask, but this information is lost in the mixer because only the channel count is known to AudioFlinger. A channel count can always be derived from a channel mask. The change consists in: - disambiguiting variable names for channel masks and counts - passing the mask information from the client to AudioFlinger and the mixer. - when using the DIRECT ouput, only verifying the format of the track is compatible with the output's for PCM. Change-Id: I50d87bfb7d7afcabdf5f12d4ab75ef3a54132c0e
2011-05-02remove last traces of copybit Mathias Agopian
Change-Id: Ia0f13a0ee6f702256482b5eb29d7fa2aa840bfc7
2011-04-28get rid of dependency on copybit HAL module Mathias Agopian
Change-Id: Ia608099a2426c11a91d33063ba53c93e1eccb428
2011-04-05New fix for issue 4111672: control block flags Eric Laurent
The first fix (commit 913af0b4) is problematic because it makes threads in mediaserver process block on the cblk mutex. This is not permitted as it can cause audio to skip or worse have a malicious application prevent all audio playback by keeping the mutex locked. The fix consists in using atomic operations when modifying the control block flags. Also fixed audio_track_cblk_t::framesReady() so that it doesn't block when called from AudioFlinger (only applies when a loop is active). Change-Id: Ibf0abb562ced3e9f64118afdd5036854bb959428
2011-03-17Send WebView the current transform and whether we're drawing a layer. Romain Guy
Bug #3275491 These can be used by WebView to correctly apply alpha and geometric transforms. Change-Id: I2ecd4376d68df886dead3c9240317de33f56828f
2011-03-08Fix issue 3439872: video chat and bluetooth SCO Eric Laurent
This change fixes the stability problems experienced when using a bluetooth headset supporting both A2DP and SCO. Problems occur when starting the video chat at which time the A2DP output is being stopped to start SCO. At that time, active AudioTracks are invalidated by AudioFlinger so that a new AudioTrack binder interface can be recreated by the client process on the new mixer thread with correct parameters. The problem was that the process to restore the binder interface was not protected against concurrent requests which caused 2 binder interfaces to be created sometimes. This could lead to permanent client deadlock if one of the client threads was waiting for a condition of the first created binder interface while the second one was created (as the AudioFlinger would only signal conditions on the last one created). This concurrent request situation is more likely to happen when a client uses the JAVA AudioTrack as the JNI implementation uses simultaneously the native AudioTrack callback and write push mechanisms. By doing so, the code that checks if the binder interface should be restored (in obtainBuffer()) is much more likely to be called concurrently from two different threads. The fix consists in protecting the critical binder interface restore phase with a flag in the AudioTrack control block. The first thread acting upon the binder interface restore request will raise the flag and the second thread will just wait for a condition to be signaled when the restore process is complete. Also protected all accesses to the AudioTrack control block by a mutex to prevent access while the track is being destroyed and restored. If a mutex cannot be held (e.g because we call a callback function), acquire a strong reference on the IAudioTrack to prevent its destruction while the cblk is being accessed. Modified AudioTrack JNI to use GetByteArrayElements() instead of GetPrimitiveArrayCritical() when writing audio buffers. Entering a critical section would cause the JNI to abort if a mediaserver crash occurs during a write due to the AudioSystem callback being called during the critical section when media server process restarts. Anyway with current JNI implementation, either versions do not copy data most of the times and the criticial version does not guaranty no data copy. The same modifications have been made to AudioRecord. Change-Id: Idc5aa711a04c3eee180cdd03f44fe17f3c4dcb52
2011-03-01Add support for up to 32 buffers per Surface Mathias Agopian
Bug: 3488016 Change-Id: Ie5536ad77d42a4d0e8270e0fd87ecb73471bcbbc
2011-01-20clean-up unneeded code Mathias Agopian
now that we removed the notion of a "inUse" buffer in surfaceflinger a lot of code can be simplified / removed. noteworthy, the whole concept of "unlockClient" wrt. "compositionComplete" is also gone. Change-Id: I210413d4c8c0998dae05c8620ebfc895d3e6233d
2010-12-08fix [3259708] Graphic Buffer Mapper does not support YV12 Mathias Agopian
remove a bunch of a code that was there only to support broken gralloc implementations Change-Id: I3c1a9172224cbcc283601abfbbd695a20815451f
2010-11-11Implement reducing the buffer count of a Surface. Jamie Gennis
Change-Id: I7f979c60c06d654aa8265002836277434bc1a64f Bug: 3095167
2010-11-08Support extracting thumbnail from rotated video tracks James Dong
Change-Id: Ife0a2536aaac5ff1efdf1035b9d2c892773ee16c
2010-10-04fix [2835280] Add support for cancelling buffers to ANativeWindow Mathias Agopian
There is a new ANativeWindow::cancelBuffer() API that can be used to cancel any dequeued buffer, BEFORE it's been enqueued. The buffer is returned to the list of availlable buffers. dequeue and cancel are not mutually thread safe, they must be called from the same thread or external synchronization must be used. Change-Id: I86cc7985bace8b6a93ad2c75d2bef5c3c2cb4d61
2010-09-30Issue 3032913: improve AudioTrack recovery time Eric Laurent
This issue showed that when an AudioTrack underruns during a too long period of time and is therefore disabled by audioflinger mixer, it takes an additional delay of up to 3 seconds to recover. This fix adds a simple mechanism to recover immediately when the client application is ready to write data again in the AudioTrack buffer Also throttle warnings on record overflows Change-Id: I8b2c71578dd134b9e60a15ee4d91b70f3799cb3d
2010-08-26fix a race in SF buffer management Mathias Agopian
also remove some unused code. Change-Id: Iae2c3309b7a08055f3e13a5b866c5c084993e352
2010-08-24fix [2931513] Add support for setting the orientation of an ANativeWindow Mathias Agopian
Also implement support for cropping. Change-Id: Iba5888dd242bf2feaac9e9ce26e404c1f404c280
2010-07-27fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot ↵ Mathias Agopian
dequeue all allocated buffers at once. this situation happened when the last buffer needed to be resized (or allocated, the first time). the assumption was that the buffer was in use by SF itself as the current buffer (obviously, this assumption made no sense when the buffer had never been allocated, btw). the system would wait until some other buffer became the "front" buffer. we fix this problem by entirely removing the requirement that the buffer being resized cannot be the front buffer. instead, we just allocate a new buffer and replace the front buffer by the new one. the downside is that this uses more memory (an extra buffer) for a brief amount of time while the old buffer is being reallocated and before it has actually been replaced. Change-Id: I022e4621209474ceb1c671b23deb4188eaaa7285
2010-06-13Native input dispatch rewrite work in progress. Jeff Brown
The old dispatch mechanism has been left in place and continues to be used by default for now. To enable native input dispatch, edit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy. Includes part of the new input event NDK API. Some details TBD. To wire up input dispatch, as the ViewRoot adds a window to the window session it receives an InputChannel object as an output argument. The InputChannel encapsulates the file descriptors for a shared memory region and two pipe end-points. The ViewRoot then provides the InputChannel to the InputQueue. Behind the scenes, InputQueue simply attaches handlers to the native PollLoop object that underlies the MessageQueue. This way MessageQueue doesn't need to know anything about input dispatch per-se, it just exposes (in native code) a PollLoop that other components can use to monitor file descriptor state changes. There can be zero or more targets for any given input event. Each input target is specified by its input channel and some parameters including flags, an X/Y coordinate offset, and the dispatch timeout. An input target can request either synchronous dispatch (for foreground apps) or asynchronous dispatch (fire-and-forget for wallpapers and "outside" targets). Currently, finding the appropriate input targets for an event requires a call back into the WindowManagerServer from native code. In the future this will be refactored to avoid most of these callbacks except as required to handle pending focus transitions. End-to-end event dispatch mostly works! To do: event injection, rate limiting, ANRs, testing, optimization, etc. Change-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25