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 11 matching lines...) Expand all Loading... | |
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "config.h" | 31 #include "config.h" |
32 #include "modules/device_orientation/DeviceSensorEventDispatcher.h" | 32 #include "core/frame/DeviceSensorEventDispatcher.h" |
33 | 33 |
34 namespace WebCore { | 34 namespace WebCore { |
35 | 35 |
36 DeviceSensorEventDispatcher::DeviceSensorEventDispatcher() | 36 DeviceSensorEventDispatcher::DeviceSensorEventDispatcher() |
37 : m_needsPurge(false) | 37 : m_needsPurge(false) |
38 , m_isDispatching(false) | 38 , m_isDispatching(false) |
39 { | 39 { |
40 } | 40 } |
41 | 41 |
42 DeviceSensorEventDispatcher::~DeviceSensorEventDispatcher() | 42 DeviceSensorEventDispatcher::~DeviceSensorEventDispatcher() |
43 { | 43 { |
44 } | 44 } |
45 | 45 |
46 void DeviceSensorEventDispatcher::addController(DeviceSensorEventController* con troller) | 46 void DeviceSensorEventDispatcher::addController(DeviceSensorEventController* con troller) |
47 { | 47 { |
48 bool wasEmpty = m_controllers.isEmpty(); | 48 bool wasEmpty = m_controllers.isEmpty(); |
49 if (!m_controllers.contains(controller)) | 49 if (!m_controllers.contains(controller)) |
50 m_controllers.append(controller); | 50 m_controllers.append(controller); |
51 if (wasEmpty) | 51 if (wasEmpty) |
52 startListening(); | 52 startListening(); |
53 } | 53 } |
54 | 54 |
55 void DeviceSensorEventDispatcher::removeController(DeviceSensorEventController* controller) | 55 void DeviceSensorEventDispatcher::removeController(DeviceSensorEventController* controller) |
56 { | 56 { |
57 // Do not actually remove the controller from the vector, instead zero them out. | 57 // Do not actually remove the controller from the vector, instead zero them out. |
58 // The zeros are removed in these two cases: | 58 // The zeros are removed in these two cases: |
59 // 1. either immediately if we are not dispatching any events, | 59 // 1. either immediately if we are not dispatching any events, |
60 // 2. or after didChangeDeviceMotion/Orientation has dispatched all events. | 60 // 2. or after didChangeDeviceMotion/Orientation has dispatched all events. |
timvolodine
2014/03/13 12:05:13
Actually we should change this as well since the r
riju_
2014/03/13 12:23:03
Done.
| |
61 // This is to correctly handle the re-entrancy case when a controller is des troyed | 61 // This is to correctly handle the re-entrancy case when a controller is des troyed |
62 // while in the didChangeDeviceMotion/Orientation method. | 62 // while in the didChangeDeviceMotion/Orientation method. |
63 size_t index = m_controllers.find(controller); | 63 size_t index = m_controllers.find(controller); |
64 if (index == kNotFound) | 64 if (index == kNotFound) |
65 return; | 65 return; |
66 | 66 |
67 m_controllers[index] = 0; | 67 m_controllers[index] = 0; |
68 m_needsPurge = true; | 68 m_needsPurge = true; |
69 | 69 |
70 if (!m_isDispatching) | 70 if (!m_isDispatching) |
(...skipping 14 matching lines...) Expand all Loading... | |
85 } | 85 } |
86 } | 86 } |
87 | 87 |
88 m_needsPurge = false; | 88 m_needsPurge = false; |
89 | 89 |
90 if (m_controllers.isEmpty()) | 90 if (m_controllers.isEmpty()) |
91 stopListening(); | 91 stopListening(); |
92 } | 92 } |
93 | 93 |
94 } // namespace WebCore | 94 } // namespace WebCore |
OLD | NEW |