Merge commit 'bc9599d48c79c18d306a13f51af9ef2aac92cdca'
* commit 'bc9599d48c79c18d306a13f51af9ef2aac92cdca':
Looper: Drop default parameters in favor of a safer overload.
Merge commit '838e93ed19879ce3d88b5be51630137d6a6999c6' into gingerbread-plus-aosp
* commit '838e93ed19879ce3d88b5be51630137d6a6999c6':
Looper: Drop default parameters in favor of a safer overload.
The low and high profiles should each match one of the
specific profiles. So we need to add the specific profiles
corresponding to the low/high profiles. This makes the
default profile compliant to documentation + cts.
Also fixed javadoc to account time lapse profiles.
Change-Id: I34e7307d00ce261c69dc10ead2900025c7f6d428
If the frame capture interval is large, read will block for a long time.
Due to the way the mediaRecorder framework works, a stop() call from
mediaRecorder waits until the read returns, causing a long wait for
stop() to return. To avoid this, we return a copy of the last read
frame with the same time stamp if a frame is not available quickly.
This keeps the read() call from blocking too long. This method is
triggered when startQuickReadReturns() is called on
CameraSourceTimeLapse.
In the still camera case, also using waitRelative on Condition
instaed of sleeping, so that we can wake it up.
Also for the idle check instead of sleeping, we now wait on a
condition variable, which is woken up when the last takePicture
callback gets called.
Change-Id: Ia74386e175536aee0f44ae2f8b114c353d3d72f5
The idea is that if you're writing code that wants fd/events/data on
return from pollOnce() / pollAll() you should really pass in all of those
arguments. When I changed the Looper API earlier, it was difficult
to ensure that all callers were passing the right parameters since they
were relying on default parameters to some degree so usage mistakes
would not have been caught by the compiler.
Change-Id: I1f2812894270aaf1515017ac1616b6b312d9b565
Merge commit '7642c82c291051919aad87c797e2dc1d77ed55e1'
* commit '7642c82c291051919aad87c797e2dc1d77ed55e1':
Make input dispatcher only ANR for foreground windows.
Merge commit 'f4d788c9309bc5480100d980608472e4cb04f309' into gingerbread-plus-aosp
* commit 'f4d788c9309bc5480100d980608472e4cb04f309':
Make input dispatcher only ANR for foreground windows.
Redesigned the input dispatcher's ANR timeout mechanism so it is much
closer to Froyo's policy. ANR is only ever signalled if the dispatcher
is waiting on a window to finish processing its previous event(s) and
there is new pending input.
In the old code, we tracked the dispatch timeout separately for each
input channel. This was somewhat complicated and also resulted in the
situation where applications could ANR long after the user had pushed
them into the background.
Change-Id: I666ecada0952d4b95f1d67b9f733842b745c7f4b
Merge commit '310da64d78750cdba4349d7cc0a268c07155569d'
* commit '310da64d78750cdba4349d7cc0a268c07155569d':
fix a typo where the eventtags code were wrong
Merge commit 'f182e8a8c2e726b376f3f4c0deb02dfdb6ae06a9' into gingerbread-plus-aosp
* commit 'f182e8a8c2e726b376f3f4c0deb02dfdb6ae06a9':
fix a typo where the eventtags code were wrong
Merge commit '14bc6b5d0677e5c454a67775c852f90389bb4567'
* commit '14bc6b5d0677e5c454a67775c852f90389bb4567':
Replace epoll() with poll() and rename PollLoop to Looper.
Added CAMERA_CMD_PLAY_RECORDING_SOUND command type to play recording
sound through sendCommand. This is currently needed by time lapse
recording using still mode capture, which disables the shutter sound
but needs to play the recording sound.
Change-Id: I376aa40f45b6064fd862abc065456b06fc338020
Merge commit '09340a4bb99507d9b6bfbfc68a450d4d4f354d73' into gingerbread-plus-aosp
* commit '09340a4bb99507d9b6bfbfc68a450d4d4f354d73':
Replace epoll() with poll() and rename PollLoop to Looper.
Merge commit 'b3ffc78f3432344702e6f5232067ab624083cad2' into gingerbread-plus-aosp
* commit 'b3ffc78f3432344702e6f5232067ab624083cad2':
Add logging of various important graphics events
- Added enum CAMERA_CMD_ENABLE_SHUTTER_SOUND which corresponds to
command type for enabling/disabling shutter sound.
- The implementation checks if it is legal to disable shutter sound.
If it is, then any process can disable the sound. If not, then only
the mediaserver process is allowed to do this. Currently time lapse
capture needs this functionality to disable shutter sound when still
mode is used to capture time lapse video.
Change-Id: Id147a3bcc6a345c2c6a6d52bf98fd8292386bb19
As part of this change, consolidated and cleaned up the Looper API so
that there are fewer distinctions between the NDK and non-NDK declarations
(no need for two callback types, etc.).
Removed the dependence on specific constants from sys/poll.h such as
POLLIN. Instead looper.h defines events like LOOPER_EVENT_INPUT for
the events that it supports. That should help make any future
under-the-hood implementation changes easier.
Fixed a couple of compiler warnings along the way.
Change-Id: I449a7ec780bf061bdd325452f823673e2b39b6ae
There are 16 events logged in the event log:
SF_APP_DEQUEUE_BEFORE
SF_APP_DEQUEUE_AFTER
SF_APP_LOCK_BEFORE
SF_APP_LOCK_AFTER
SF_APP_QUEUE
SF_REPAINT
SF_COMPOSITION_COMPLETE
SF_UNLOCK_CLIENTS
SF_SWAP_BUFFERS
SF_REPAINT_DONE
SF_FB_POST_BEFORE
SF_FB_POST_AFTER
SF_FB_DEQUEUE_BEFORE
SF_FB_DEQUEUE_AFTER
SF_FB_LOCK_BEFORE
SF_FB_LOCK_AFTER
all events log the buffer conserned and a timestamp in microseconds.
by default the logging is not enabled, to turn it on:
adb shell service call SurfaceFlinger 1006 i31 1
adb shell setprop debug.graphic_log 1
The effect is immediate in SurfaceFlinger, but applications need to be
restarted.
Change-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1
The native media scanner no longer filters files based on file extension.
Audio, video, image and playlist files are handled as before, but non-media
files are now inserted into the "files" table, which was originally added
to support MTP.
Change-Id: I9053218fb6d2671a3bb181405c34442b94678afc
Signed-off-by: Mike Lockwood <lockwood@android.com>
This change is essentially a rewrite of the main input dispatcher loop
with the target identification folded in. Since the input dispatcher now
has all of the window state, it can make better decisions about
when to ANR.
Added a .5 second deadline for processing app switch keys. This behavior
predates Gingerbread but had not previously been ported.
Fixed some timing inaccuracies in the ANR accounting that could cause
applications to ANR sooner than they should have.
Added a mechanism for tracking key and motion events that have been
dispatched to a window so that appropriate cancelation events can be
synthesized when recovering from ANR. This change helps to keep
applications in sync so they don't end up with stuck buttons upon
recovery from ANRs.
Added more comments to describe the tricky parts of PollLoop.
Change-Id: I13dffca27acb436fc383980db536abc4d8b9e6f1
- Exposing the specific resolution profile levels
QUALITY_{QCIF,CIF,480P,720P,1080P} and the new time lapse profiles
QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,CIF,480P,720P,1080P}
- Unhiding the hasProfile() function used to test if a given profile exists.
Change-Id: I5d8b9e1ba61718f304235e76d85244e428e68643
- Added hasProfile to CamcorderProfile and JNI.
- Added hasCamcorderProfile to MediaProfiles.
- using android.hardware.Camera.CAMERA_ID_DEFAULT for default camera
in get().
Change-Id: Ib57bb49ae79492d7cbc0ec6c7b6efcbf74f80013
- Added enums QUALITY_{QCIF,480P,720P,1080P}
QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,480P,720P,1080P} in CamcorderProfile
and corresponding ones in MediaProfiles.
- Added functions createDefaultCamcorderTimeLapseLowProfile,
createDefaultCamcorderTimeLapseHighProfile to set default values.
- Moved javadoc for constants to the get() function.
Change-Id: Ib8b3f8d29395dff77a397d1e6b44cfaf8c481d4d
Merge commit 'e126119c3a406bc564f2549aeb1416aff112689d'
* commit 'e126119c3a406bc564f2549aeb1416aff112689d':
Modify type of some environmental reverb parameters
Changed type of decay time, reverb delay and reflections delay parameters
from signed to unsigned int to match OpenSL ES interface definition.
Also fixed some type casts in lvm reverb wrapper.
Change-Id: I5ca5e76a87c2590f01f031f3168355586ef22556