OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 } | 184 } |
185 | 185 |
186 void MIDIAccess::didReceiveMIDIData(unsigned portIndex, | 186 void MIDIAccess::didReceiveMIDIData(unsigned portIndex, |
187 const unsigned char* data, | 187 const unsigned char* data, |
188 size_t length, | 188 size_t length, |
189 double timeStamp) { | 189 double timeStamp) { |
190 DCHECK(isMainThread()); | 190 DCHECK(isMainThread()); |
191 if (portIndex >= m_inputs.size()) | 191 if (portIndex >= m_inputs.size()) |
192 return; | 192 return; |
193 | 193 |
194 // Convert from time in seconds which is based on the time coordinate system | 194 m_inputs[portIndex]->didReceiveMIDIData(portIndex, data, length, timeStamp); |
195 // of monotonicallyIncreasingTime() into time in milliseconds (a | |
196 // DOMHighResTimeStamp) according to the same time coordinate system as | |
197 // performance.now(). This is how timestamps are defined in the Web MIDI | |
198 // spec. | |
199 Document* document = toDocument(getExecutionContext()); | |
200 DCHECK(document); | |
201 | |
202 double timeStampInMilliseconds = | |
203 1000 * | |
204 document->loader()->timing().monotonicTimeToZeroBasedDocumentTime( | |
205 timeStamp); | |
206 | |
207 m_inputs[portIndex]->didReceiveMIDIData(portIndex, data, length, | |
208 timeStampInMilliseconds); | |
209 } | 195 } |
210 | 196 |
211 void MIDIAccess::sendMIDIData(unsigned portIndex, | 197 void MIDIAccess::sendMIDIData(unsigned portIndex, |
212 const unsigned char* data, | 198 const unsigned char* data, |
213 size_t length, | 199 size_t length, |
214 double timeStampInMilliseconds) { | 200 double timeStampInMilliseconds) { |
215 if (!data || !length || portIndex >= m_outputs.size()) | 201 if (!data || !length || portIndex >= m_outputs.size()) |
216 return; | 202 return; |
217 // Convert from a time in milliseconds (a DOMHighResTimeStamp) according to | 203 // Convert from a time in milliseconds (a DOMHighResTimeStamp) according to |
218 // the same time coordinate system as performance.now() into a time in seconds | 204 // the same time coordinate system as performance.now() into a time in seconds |
(...skipping 21 matching lines...) Expand all Loading... |
240 } | 226 } |
241 | 227 |
242 DEFINE_TRACE(MIDIAccess) { | 228 DEFINE_TRACE(MIDIAccess) { |
243 visitor->trace(m_inputs); | 229 visitor->trace(m_inputs); |
244 visitor->trace(m_outputs); | 230 visitor->trace(m_outputs); |
245 EventTargetWithInlineData::trace(visitor); | 231 EventTargetWithInlineData::trace(visitor); |
246 ActiveDOMObject::trace(visitor); | 232 ActiveDOMObject::trace(visitor); |
247 } | 233 } |
248 | 234 |
249 } // namespace blink | 235 } // namespace blink |
OLD | NEW |