Implement HTMLMediaElement.fastSeek(), basically by changing all the
MediaDecoderReader::Seek() overrides to not call
MediaDecoderReader::DecodeToTarget(), and have MediaDecoderReader::DecodeSeek()
call DecodeToTarget() if we're doing an accurate (non-fast) seek.
Update gizmo.mp4 to have a keyframe every second, instead of only 1 keyframe at
the start of stream. This makes the unit test I added more useful for mp4...
I pushed most of the seek target clamping logic in MediaDecoder up into
HTMLMediaElement, so that we're clamping in fewer places. Note
MediaDecoderStateMachine::Seek() still sanity checks the seek target.
We have to update the currentTime/MediaDecoder playback position after a seek
completes now, rather than assuming the seek always got it exactly right.
Removed those pesky assertions about seek target lying in the first frame after
seek, since actually sometimes the media doesn't have samples for all streams
after a seek (either due to the media being encoded like that, or because of a
bug in the platform's decoder, not entirely sure).
Green: https://tbpl.mozilla.org/?tree=Try&rev=b028258565e2
This patch adds an annotation to each assertion for non-main threads in
the BlueZ backend of Bluetooth. This should make is easy and obvious to
see in which context a method or function is expected to run.
The global variables in BluetoothDBusService.cpp are now annotated
for their multi-threading access. Some code still seems to access
some of these variables in an unprotected manner. Follow-up patches
should clean this up.
As a side effect, this patch makes several variables as constant,
which improves correctness of the code.
Until now, we had corner cases in Bluetooth where DBus messages might
have been received on connections that are shutting down. This can't
happen any longer and this patch replaces the respective tests with
assertions.
With this patch, the start code of Bluetooth's BlueZ back mostly
runs on the I/O thread. Only the loading of the BT firmware and
the blocking connection setup is done on the BT thread.
The stop code has been moved to the I/O thread, except for some
initial waiting and the final cleanup of the firmware. The code
doesn't wait for errors anymore when cleaning up the connection
to DBus. This makes it run completely non-blocking. The initial
waiting may later be replaced by something more sophisticated.
The field |number| is missing when REQUEST_QUERY_CALL_FORWARD_STATUS
gets invoked from RilContentHelper.js. This patch adds a test to the
function |queryCallForwardingStatus| for handling this case.
--HG--
extra : rebase_source : c56474a2023434ac3658c7771244c6380ca2a6e0
When starting up RIL, |radioTech| in |voiceRegistrationState| is not
defined before we received REQUEST_VOICE_REGISTRATION_STATE. This
patch adds an extra test to avoid the respective error message.
--HG--
extra : rebase_source : 19927ec9a3892606d81f3209ea470ce297d927d7
The response handler for REQUEST_GET_SMSC_ADDRESS expects the field
|rilMessageType| to be present in its options. This is not the case
if the request was generated from within ril_worker.js.
This patch handles this case by adding an extra test for the existance
of the field. The response handler will return without sending a reply
to the content helper. This is not a problem since the content handler
did not invoke the request anyway.
--HG--
extra : rebase_source : 211d5f4dc29dd99b745bc29d856c291175f156f1
One of the functions in ril_worker.js is supposed to return 'null'
on errors, but returns 'undefined' instead. This patch fixes the
problem.
--HG--
extra : rebase_source : 0f0c1cc06fb4bcb6fe034ab3c88890b351a6cad6