summaryrefslogtreecommitdiffstats
path: root/include/private
Commit message (Collapse)AuthorAgeFilesLines
...
* added native_window_set_buffer_count()Mathias Agopian2010-05-211-0/+1
| | | | | | | this method can be used to change the number of buffers associated to a native window. the default is two. Change-Id: I608b959e6b29d77f95edb23c31dc9b099a758f2f
* fix the threading issue for setBuffercount()Mathias Agopian2010-05-201-14/+29
| | | | | | | | this change introduces R/W locks in the right places. on the server-side, it guarantees that setBufferCount() is synchronized with "retire" and "resize". on the client-side, it guarantees that setBufferCount() is synchronized with "dequeue", "lockbuffer" and "queue"
* fix some bugs in SharedBufferStack::resizeMathias Agopian2010-05-171-4/+5
| | | | | | added buffers should now be labeled properly. Change-Id: I28aa753fbe89ab89134e7753575319478934c7fa
* Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.Eric Laurent2010-05-171-11/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem is due to a too big difference between the buffer size used at the hardware interface and at the A2DP interface. When no resampling occurs we don't notice problems but the timing is very tight. As soon as resampling is activated, the AudioTrack underruns. This is because the AudioTrack buffers are not resized when moving the AudioTrack from hardware to A2DP output. The AudioTrack buffers are calculated based on a hardware output buffer size of 3072 bytes. Which is much less than the A2DP output buffer size (10240). The solution consists in creating new tracks with new buffers in AudioFlinger when the A2DP output is opened instead of just transfering active tracks from hardware output mixer thread to the new A2DP output mixer thread. To avoid synchronization issues between mixer threads and client processes, this is done by invalidating tracks by setting a flag in their control block and having AudioTrack release the handle on this track (IAudioTrack) and create a new IAudioTrack when this flag is detected next time obtainBuffer() or start() is executed. AudioFlinger modifications: - invalidate the tracks when setStreamOutput() is called - make sure that notifications of output opening/closing and change of stream type to output mapping are sent synchronously to client process. This is necessary so that AudioSystem has the new stream to output mapping when the AudioTrack detects the invalidate flag in the client process. Previously their were sent when the corresponding thread loop was executed. AudioTrack modifications: - move frame count calculation and verification from set() to createTrack() so that is is updated every time a new IAudioTrack is created. - detect track invalidate flag in obtainBuffer() and start() and create a new IAudioTrack. AudioTrackShared modifications - group all flags (out, flowControlFlag, forceReady...) into a single bit filed to save space. Change-Id: I9ac26b6192230627d35084e1449640caaf7d56ee
* AudioFlinger: rename variables to clarify reference to track channel count ↵Eric Laurent2010-05-141-1/+1
| | | | | | | | | | | or channel mask Some variables and structure members should be renamed to reflect the fact that they contain the number of channels in a track (channel count) or the actual channels used by a track (channel mask). Especially member "channels" of track control block (struct audio_track_cblk_t) is actually the number of channels (channels count). Change-Id: I220c8dede9fc00c8a5693389e790073b6ed307b8
* SharedBufferStack now can grow up to 16 buffers.Mathias Agopian2010-05-121-3/+52
| | | | | | there is a new resize() api, which currently only allows growing. Change-Id: Ia37b81b73be466d2491ffed7f3a23cd8e113c6fe
* Add support for enqueuing buffers in arbitrary orderMathias Agopian2010-04-281-1/+3
| | | | | | Also added a very simple SharedBufferStack unit test. Change-Id: I253dbbe98a53c966b78d22d4d6dd59f8aefc8c40
* cleanup. waitForCondition() now uses polymorphsim instead of templtesMathias Agopian2010-04-281-49/+10
| | | | | | | | | the reason for the above change is that waitForCondition() had become large over time, mainly to handle error cases, using inlines to evaluate the condition doesn't buys us much anymore while it increases code size. Change-Id: I2595d850832628954b900ab8bb1796c863447bc7
* fix a race condition in undoDequeue(), where 'tail' could be computed ↵Mathias Agopian2010-04-281-2/+2
| | | | | | | | | | | | | | | incorrectly. in the undoDequeue() case, 'tail' was recalculated from 'available' and 'head' however there was a race between this and retireAndLock(), which could cause 'tail' to be recalculated wrongly. the interesting thing though is that retireAndLock() shouldn't have any impact on the value of 'tail', which is client-side only attribute. we fix the race by saving the value of 'tail' before dequeue() and restore it in the case of undoDequeue(), since we know it doesn't depend on retireAndLock(). Change-Id: I4bcc4d16b6bc4dd93717ee739c603040b18295a0
* added setCrop() to android_native_window_tMathias Agopian2010-04-201-9/+20
| | | | | | | hooked up the new method up to Surface.cpp the actual crop is not implemented in SF yet Change-Id: Ic6e313c98fd880f127a051a0ccc71808bd689751
* add support for up to 16 buffers per surfaceMathias Agopian2010-04-201-8/+12
| | | | | | | also increase the dirtyregion size from 1 to 6 rectangles. Overall we now need 27KiB process instead of 4KiB Change-Id: Iebda5565015158f49d9ca8dbcf55e6ad04855be3
* split libsurfaceflinger_client and libcamera_client out of libuiMathias Agopian2010-02-112-7/+8
|
* fix [2133133] Software OpenGL ES Lighting is buggy (GL Gears washed out bug)Mathias Agopian2010-02-031-2/+2
| | | | | | | | | | A typo caused GL_AMBIENT_AND_DIFFUSE to only set the the ambient color. Fix another typo which caused the viewer position to be wrong for specular highlights. Switch back to eye-space lighting, since there are still some issues with some demos (San Angeles in particular).
* implement [2396050] Add ETC1 texture support to AGLMathias Agopian2010-02-021-1/+6
|
* fix[2228133] pixelflinger ignores the "vertical stride" leading to artifacts ↵Mathias Agopian2009-11-021-1/+3
| | | | | | | | when playing back video we lost the concept of vertical stride when moving video playback to EGLImage. Here we bring it back in a somewhat hacky-way that will work only for the softgl/mdp backend.
* fix [2182249] [MR1] valgrind error in surface flingerMathias Agopian2009-10-151-6/+9
|
* fix [2170319] gmail bulk operation checkbox latency on passionMathias Agopian2009-10-072-48/+1
| | | | | | | | | | | | | | | This also fixes [2152536] ANR in browser When SF is enqueuing buffers faster than SF dequeues them. The update flag in SF is not counted and under some situations SF will only dequeue the first buffer. The state at this point is not technically corrupted, it's valid, but just delayed by one buffer. In the case of the Browser ANR, because the last enqueued buffer was delayed the resizing of the current buffer couldn't happen. The system would always fall back onto its feet if anything -else- in tried to draw, because the "late" buffer would be picked up then.
* fix [2152536] ANR in browserMathias Agopian2009-10-061-7/+13
| | | | | | | | | | | | | | | | A window is created and the browser is about to render into it the very first time, at that point it does an IPC to SF to request a new buffer. Meanwhile, the window manager removes that window from the list and the shared memory block it uses is marked as invalid. However, at that point, another window is created and is given the same index (that just go freed), but a different identity and resets the "invalid" bit in the shared block. When we go back to the buffer allocation code, we're stuck because the surface we're allocating for is gone and we don't detect it's invalid because the invalid bit has been reset. It is not sufficient to check for the invalid bit, I should also check that identities match.
* fix [2168531] have software-only gralloc buffer side-step the HALMathias Agopian2009-10-061-0/+83
|
* fix [2167050] glTexImage2D code path buggy in SurfaceFlingerMathias Agopian2009-10-062-127/+1
| | | | | | | | | | | | | | When EGLImage extension is not available, SurfaceFlinger will fallback to using glTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an extra copy. However this code path has never been exercised and had some bugs which this patch fix. Mainly the scale factor wasn't computed right when falling back on glDrawElements. We also fallback to this mode of operation if a buffer doesn't have the adequate usage bits for EGLImage usage. This changes only code that is currently not executed. Some refactoring was needed to keep the change clean. This doesn't change anything functionaly.
* Attempt to fix [2152536] ANR in browserMathias Agopian2009-10-021-7/+9
| | | | | | | | | | | The ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable. When it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return immediately in the above case. For some reason, the surface here wasn't marked as NO_INIT. This change makes the code more robust by always (irregadless or errors) setting the NO_INIT status in all code paths where a surface is removed from the list. Additionaly added more information in the logs, should this happen again.
* add basic time stats for surfaces lock timeMathias Agopian2009-09-171-8/+20
|
* make sure to update the tail pointer when undoing a dequeueMathias Agopian2009-09-141-0/+2
|
* fix [2112575] stuck on DequeueCondition for a surface that doesn't exist anymoreMathias Agopian2009-09-101-2/+3
| | | | this also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer
* make sure conditions will return when the status of a surface is not NO_ERRORMathias Agopian2009-09-101-4/+12
|
* fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properlyMathias Agopian2009-09-074-156/+331
| | | | | | | | | | | | | | | Rewrote SurfaceFlinger's buffer management from the ground-up. The design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice. The main new feature is to be able to dequeue all buffers at once (very important when there are only two). A client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued. The current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time. eg. Allowed sequence: DQ, DQ, LOCK, Q, LOCK, Q eg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q
* Calculate specular lighting correctlyMartin Storsjo2009-08-251-0/+1
| | | | | | Since the lighting calculations are done in object space, the vector from the object to the viewer also needs to be transformed to object space.
* be more friendly with CMathias Agopian2009-08-131-2/+2
|
* Fix issue 1795088 Improve audio routing codeEric Laurent2009-07-231-6/+7
| | | | | | | Initial commit for review. Integrated comments after patch set 1 review. Fixed lockup in AudioFlinger::ThreadBase::exit() Fixed lockup when playing tone with AudioPlocyService startTone()
* add a ctor to Mutex to specify the type, which can be shared. This is used ↵Mathias Agopian2009-07-131-0/+2
| | | | by sf and af an soon will allow some optimization in the kernel for non shared mutexes
* implement Mutex and Condition with pthread instead of calling futex directly.Mathias Agopian2009-07-131-60/+0
| | | | | internally pthread uses futex. the implementation consists of simple inlines there are no implementation files anymore.
* Merge change 6382Android (Google) Code Review2009-07-071-0/+2
|\ | | | | | | | | * changes: add a virtual destructor to region_rasterizer, to be on the safe side
| * add a virtual destructor to region_rasterizer, to be on the safe sideMathias Agopian2009-07-071-0/+2
| |
* | am 88e209dc: Fix issue 1743700: AudioTrack: setPlaybackRate can not set the ↵Eric Laurent2009-07-071-4/+3
|\ \ | |/ |/| | | | | | | | | | | | | playback rate to twice of the ouputSR Merge commit '88e209dcf8c2ebddda5c272f46d1bd5478bc639c' * commit '88e209dcf8c2ebddda5c272f46d1bd5478bc639c': Fix issue 1743700: AudioTrack: setPlaybackRate can not set the playback rate to twice of the ouputSR
| * Fix issue 1743700: AudioTrack: setPlaybackRate can not set the playback rate ↵Eric Laurent2009-07-071-4/+3
| | | | | | | | | | | | | | | | to twice of the ouputSR Store sample rate on 32 bits instead of 16 bits in audio_track_cblk_t. Removed sampleRate() methods from AudioTrack and AudioRecord: replaced by getSampleRate(). AudioTrack::setSampleRate() no returns a status.
* | merge master in master_glMathias Agopian2009-06-241-1/+1
|\ \
| * \ am 5277103d: Merge change 5035 into donutAndroid (Google) Code Review2009-06-221-1/+1
| |\ \ | | |/ | | | | | | | | | | | | | | | Merge commit '5277103db9033226814edc8fcba6f4ba4e846678' * commit '5277103db9033226814edc8fcba6f4ba4e846678': add glTexParameteri() and fix glTexParameteriv()
| | * add glTexParameteri() and fix glTexParameteriv()Mathias Agopian2009-06-221-1/+1
| | |
* | | fix a bug where copybit only renders in the first buffer when used with s/w GLMathias Agopian2009-06-101-3/+2
| | |
* | | revive the copybit test.Mathias Agopian2009-06-091-0/+1
| | |
* | | cleanup Debug.h a bitMathias Agopian2009-06-041-12/+5
| | |
* | | merge master to master_glMathias Agopian2009-05-223-23/+39
|\ \ \ | |/ /
| * | move libbinder's header files under includes/binderMathias Agopian2009-05-202-31/+5
| | |
| * | checkpoint: split libutils into libutils + libbinderMathias Agopian2009-05-203-1/+43
| |/
* | Region now has its own implementation instead of relying on SkRegion, which ↵Mathias Agopian2009-05-171-0/+279
| | | | | | | | allows us to break libui's dependency on libcorecg.
* | move android_native_buffer_t declaration into its own ↵Mathias Agopian2009-05-052-1/+63
| | | | | | | | private/ui/android_native_priv.h header, since user code should never have access to it.
* | move opengl/include/EGL/android_natives.h to ↵Mathias Agopian2009-05-051-0/+76
| | | | | | | | | | | | include/ui/egl/android_natives.h and don't include it from egl.h the android_native_ types are just forward declared in egl.h
* | a brand new MessageQueue for SurfaceFlinger.Mathias Agopian2009-04-241-28/+0
| |
* | Integrate from //sandbox/mathias/donut/...@145728Mathias Agopian2009-04-102-25/+35
|/ | | | SurfaceFlinger rework for new EGL driver model support.
* auto import from //branches/cupcake_rel/...@140373The Android Open Source Project2009-03-181-1/+2
|