Changeset 204509 in webkit
- Timestamp:
- Aug 16, 2016 9:57:17 AM (8 years ago)
- Location:
- trunk/Source
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r204508 r204509 1 2016-08-16 Chris Dumez <cdumez@apple.com> 2 3 Unreviewed, rolling out r204506. 4 5 Broke the build 6 7 Reverted changeset: 8 9 "Cleanup WK2 platform gamepad handling." 10 https://bugs.webkit.org/show_bug.cgi?id=160871 11 http://trac.webkit.org/changeset/204506 12 1 13 2016-08-16 Darin Adler <darin@apple.com> 2 14 -
trunk/Source/WebCore/platform/gamepad/GamepadProviderClient.h
r204506 r204509 28 28 #if ENABLE(GAMEPAD) 29 29 30 #include <wtf/Vector.h>31 32 30 namespace WebCore { 33 31 … … 38 36 virtual ~GamepadProviderClient() { } 39 37 40 virtual void setInitialConnectedGamepads(const Vector<PlatformGamepad*>&) { }41 38 virtual void platformGamepadConnected(PlatformGamepad&) = 0; 42 39 virtual void platformGamepadDisconnected(PlatformGamepad&) = 0; -
trunk/Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.cpp
r204506 r204509 97 97 IOHIDManagerRegisterDeviceMatchingCallback(m_manager.get(), deviceAddedCallback, this); 98 98 IOHIDManagerRegisterDeviceRemovalCallback(m_manager.get(), deviceRemovedCallback, this); 99 100 startMonitoringInput();101 }102 103 void HIDGamepadProvider::stopMonitoringInput()104 {105 IOHIDManagerRegisterInputValueCallback(m_manager.get(), nullptr, nullptr);106 }107 108 void HIDGamepadProvider::startMonitoringInput()109 {110 99 IOHIDManagerRegisterInputValueCallback(m_manager.get(), deviceValuesChangedCallback, this); 111 100 } … … 123 112 { 124 113 m_shouldDispatchCallbacks = true; 125 126 for (auto* client : m_clients)127 client->setInitialConnectedGamepads(m_gamepadVector);128 114 } 129 115 -
trunk/Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.h
r204506 r204509 52 52 const Vector<PlatformGamepad*>& platformGamepads() final { return m_gamepadVector; } 53 53 54 WEBCORE_EXPORT void stopMonitoringInput();55 WEBCORE_EXPORT void startMonitoringInput();56 57 54 void deviceAdded(IOHIDDeviceRef); 58 55 void deviceRemoved(IOHIDDeviceRef); -
trunk/Source/WebKit2/ChangeLog
r204508 r204509 1 2016-08-16 Chris Dumez <cdumez@apple.com> 2 3 Unreviewed, rolling out r204506. 4 5 Broke the build 6 7 Reverted changeset: 8 9 "Cleanup WK2 platform gamepad handling." 10 https://bugs.webkit.org/show_bug.cgi?id=160871 11 http://trac.webkit.org/changeset/204506 12 1 13 2016-08-16 Darin Adler <darin@apple.com> 2 14 -
trunk/Source/WebKit2/Platform/Logging.h
r204506 r204509 44 44 #define WEBKIT2_LOG_CHANNELS(M) \ 45 45 M(ContextMenu) \ 46 M(Gamepad) \47 46 M(IDB) \ 48 47 M(IconDatabase) \ -
trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp
r204506 r204509 49 49 UIGamepadProvider::UIGamepadProvider() 50 50 : m_gamepadSyncTimer(RunLoop::main(), this, &UIGamepadProvider::gamepadSyncTimerFired) 51 , m_disableMonitoringTimer(RunLoop::main(), this, &UIGamepadProvider::disableMonitoringTimerFired) 51 52 { 52 53 } … … 64 65 return; 65 66 66 webPageProxy->gamepadActivity(snapshotGamepads());67 }68 69 void UIGamepadProvider::scheduleGamepadStateSync()70 {71 if (!m_isMonitoringGamepads || m_gamepadSyncTimer.isActive())72 return;73 74 if (m_gamepads.isEmpty() || m_processPoolsUsingGamepads.isEmpty()) {75 m_gamepadSyncTimer.stop();76 return;77 }78 79 m_gamepadSyncTimer.startOneShot(maximumGamepadUpdateInterval);80 }81 82 void UIGamepadProvider::setInitialConnectedGamepads(const Vector<PlatformGamepad*>& initialGamepads)83 {84 ASSERT(!m_hasInitialGamepads);85 86 m_gamepads.resize(initialGamepads.size());87 88 for (auto* gamepad : initialGamepads) {89 if (!gamepad)90 continue;91 m_gamepads[gamepad->index()] = std::make_unique<UIGamepad>(*gamepad);92 }93 94 for (auto& pool : m_processPoolsUsingGamepads)95 pool->setInitialConnectedGamepads(m_gamepads);96 97 m_hasInitialGamepads = true;98 }99 100 void UIGamepadProvider::platformGamepadConnected(PlatformGamepad& gamepad)101 {102 if (m_gamepads.size() <= gamepad.index())103 m_gamepads.resize(gamepad.index() + 1);104 105 ASSERT(!m_gamepads[gamepad.index()]);106 m_gamepads[gamepad.index()] = std::make_unique<UIGamepad>(gamepad);107 108 scheduleGamepadStateSync();109 110 for (auto& pool : m_processPoolsUsingGamepads)111 pool->gamepadConnected(*m_gamepads[gamepad.index()]);112 }113 114 void UIGamepadProvider::platformGamepadDisconnected(PlatformGamepad& gamepad)115 {116 ASSERT(gamepad.index() < m_gamepads.size());117 ASSERT(m_gamepads[gamepad.index()]);118 119 std::unique_ptr<UIGamepad> disconnectedGamepad = WTFMove(m_gamepads[gamepad.index()]);120 121 scheduleGamepadStateSync();122 123 for (auto& pool : m_processPoolsUsingGamepads)124 pool->gamepadDisconnected(*disconnectedGamepad);125 }126 127 void UIGamepadProvider::platformGamepadInputActivity()128 {129 auto platformGamepads = this->platformGamepads();130 ASSERT(platformGamepads.size() == m_gamepads.size());131 132 for (size_t i = 0; i < platformGamepads.size(); ++i) {133 if (!platformGamepads[i]) {134 ASSERT(!m_gamepads[i]);135 continue;136 }137 138 ASSERT(m_gamepads[i]);139 m_gamepads[i]->updateFromPlatformGamepad(*platformGamepads[i]);140 }141 142 scheduleGamepadStateSync();143 }144 145 void UIGamepadProvider::processPoolStartedUsingGamepads(WebProcessPool& pool)146 {147 ASSERT(!m_processPoolsUsingGamepads.contains(&pool));148 m_processPoolsUsingGamepads.add(&pool);149 150 if (!m_isMonitoringGamepads && platformWebPageProxyForGamepadInput())151 startMonitoringGamepads();152 153 scheduleGamepadStateSync();154 }155 156 void UIGamepadProvider::processPoolStoppedUsingGamepads(WebProcessPool& pool)157 {158 ASSERT(m_processPoolsUsingGamepads.contains(&pool));159 m_processPoolsUsingGamepads.remove(&pool);160 161 if (m_isMonitoringGamepads && !platformWebPageProxyForGamepadInput())162 platformStopMonitoringInput();163 164 scheduleGamepadStateSync();165 }166 167 void UIGamepadProvider::viewBecameActive(WebPageProxy& page)168 {169 if (!m_processPoolsUsingGamepads.contains(&page.process().processPool()))170 return;171 172 if (!m_isMonitoringGamepads)173 startMonitoringGamepads();174 175 if (platformWebPageProxyForGamepadInput())176 platformStartMonitoringInput();177 }178 179 void UIGamepadProvider::viewBecameInactive(WebPageProxy& page)180 {181 auto pageForGamepadInput = platformWebPageProxyForGamepadInput();182 if (pageForGamepadInput == &page)183 platformStopMonitoringInput();184 }185 186 void UIGamepadProvider::startMonitoringGamepads()187 {188 if (m_isMonitoringGamepads)189 return;190 191 m_isMonitoringGamepads = true;192 platformStartMonitoringGamepads();193 }194 195 void UIGamepadProvider::stopMonitoringGamepads()196 {197 if (!m_isMonitoringGamepads)198 return;199 200 m_isMonitoringGamepads = false;201 platformStopMonitoringGamepads();202 m_gamepads.clear();203 }204 205 Vector<GamepadData> UIGamepadProvider::snapshotGamepads()206 {207 67 Vector<GamepadData> gamepadDatas; 208 68 gamepadDatas.reserveInitialCapacity(m_gamepads.size()); … … 215 75 } 216 76 217 return gamepadDatas; 77 webPageProxy->gamepadActivity(gamepadDatas); 78 } 79 80 void UIGamepadProvider::scheduleGamepadStateSync() 81 { 82 if (!m_isMonitoringGamepads || m_gamepadSyncTimer.isActive()) 83 return; 84 85 if (m_gamepads.isEmpty() || m_processPoolsUsingGamepads.isEmpty()) { 86 m_gamepadSyncTimer.stop(); 87 return; 88 } 89 90 m_gamepadSyncTimer.startOneShot(maximumGamepadUpdateInterval); 91 } 92 93 void UIGamepadProvider::platformGamepadConnected(PlatformGamepad& gamepad) 94 { 95 if (m_gamepads.size() <= gamepad.index()) 96 m_gamepads.resize(gamepad.index() + 1); 97 98 ASSERT(!m_gamepads[gamepad.index()]); 99 m_gamepads[gamepad.index()] = std::make_unique<UIGamepad>(gamepad); 100 101 scheduleGamepadStateSync(); 102 103 for (auto& pool : m_processPoolsUsingGamepads) 104 pool->gamepadConnected(*m_gamepads[gamepad.index()]); 105 } 106 107 void UIGamepadProvider::platformGamepadDisconnected(PlatformGamepad& gamepad) 108 { 109 ASSERT(gamepad.index() < m_gamepads.size()); 110 ASSERT(m_gamepads[gamepad.index()]); 111 112 std::unique_ptr<UIGamepad> disconnectedGamepad = WTFMove(m_gamepads[gamepad.index()]); 113 114 scheduleGamepadStateSync(); 115 116 for (auto& pool : m_processPoolsUsingGamepads) 117 pool->gamepadDisconnected(*disconnectedGamepad); 118 } 119 120 void UIGamepadProvider::platformGamepadInputActivity() 121 { 122 auto platformGamepads = this->platformGamepads(); 123 ASSERT(platformGamepads.size() == m_gamepads.size()); 124 125 for (size_t i = 0; i < platformGamepads.size(); ++i) { 126 if (!platformGamepads[i]) { 127 ASSERT(!m_gamepads[i]); 128 continue; 129 } 130 131 ASSERT(m_gamepads[i]); 132 m_gamepads[i]->updateFromPlatformGamepad(*platformGamepads[i]); 133 } 134 135 scheduleGamepadStateSync(); 136 } 137 138 void UIGamepadProvider::processPoolStartedUsingGamepads(WebProcessPool& pool) 139 { 140 ASSERT(!m_processPoolsUsingGamepads.contains(&pool)); 141 m_processPoolsUsingGamepads.add(&pool); 142 143 if (!m_isMonitoringGamepads && platformWebPageProxyForGamepadInput()) 144 startMonitoringGamepads(); 145 146 scheduleGamepadStateSync(); 147 } 148 149 void UIGamepadProvider::processPoolStoppedUsingGamepads(WebProcessPool& pool) 150 { 151 ASSERT(m_processPoolsUsingGamepads.contains(&pool)); 152 m_processPoolsUsingGamepads.remove(&pool); 153 154 if (m_isMonitoringGamepads && !platformWebPageProxyForGamepadInput()) 155 scheduleDisableGamepadMonitoring(); 156 157 scheduleGamepadStateSync(); 158 } 159 160 void UIGamepadProvider::viewBecameActive(WebPageProxy& page) 161 { 162 if (!m_processPoolsUsingGamepads.contains(&page.process().processPool())) 163 return; 164 165 m_disableMonitoringTimer.stop(); 166 startMonitoringGamepads(); 167 } 168 169 void UIGamepadProvider::viewBecameInactive(WebPageProxy& page) 170 { 171 auto pageForGamepadInput = platformWebPageProxyForGamepadInput(); 172 if (pageForGamepadInput == &page) 173 scheduleDisableGamepadMonitoring(); 174 } 175 176 void UIGamepadProvider::scheduleDisableGamepadMonitoring() 177 { 178 if (!m_disableMonitoringTimer.isActive()) 179 m_disableMonitoringTimer.startOneShot(0); 180 } 181 182 void UIGamepadProvider::disableMonitoringTimerFired() 183 { 184 stopMonitoringGamepads(); 185 } 186 187 void UIGamepadProvider::startMonitoringGamepads() 188 { 189 if (m_isMonitoringGamepads) 190 return; 191 192 m_isMonitoringGamepads = true; 193 platformStartMonitoringGamepads(); 194 } 195 196 void UIGamepadProvider::stopMonitoringGamepads() 197 { 198 if (!m_isMonitoringGamepads) 199 return; 200 201 m_isMonitoringGamepads = false; 202 platformStopMonitoringGamepads(); 218 203 } 219 204 … … 243 228 } 244 229 245 void UIGamepadProvider::platformStopMonitoringInput()246 {247 }248 249 void UIGamepadProvider::platformStartMonitoringInput()250 {251 }252 253 230 #endif // !PLATFORM(MAC) 254 231 -
trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h
r204506 r204509 65 65 const Vector<WebCore::PlatformGamepad*>& platformGamepads(); 66 66 WebPageProxy* platformWebPageProxyForGamepadInput(); 67 void platformStopMonitoringInput();68 void platformStartMonitoringInput();69 67 70 void setInitialConnectedGamepads(const Vector<WebCore::PlatformGamepad*>&) final;71 68 void platformGamepadConnected(WebCore::PlatformGamepad&) final; 72 69 void platformGamepadDisconnected(WebCore::PlatformGamepad&) final; … … 76 73 void gamepadSyncTimerFired(); 77 74 78 Vector<GamepadData> snapshotGamepads(); 75 void scheduleDisableGamepadMonitoring(); 76 void disableMonitoringTimerFired(); 79 77 80 78 HashSet<WebProcessPool*> m_processPoolsUsingGamepads; … … 83 81 84 82 RunLoop::Timer<UIGamepadProvider> m_gamepadSyncTimer; 83 RunLoop::Timer<UIGamepadProvider> m_disableMonitoringTimer; 85 84 86 85 bool m_isMonitoringGamepads { false }; 87 bool m_hasInitialGamepads { false };88 86 }; 89 87 -
trunk/Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp
r204506 r204509 52 52 } 53 53 54 void UIGamepadProvider::platformStopMonitoringInput()55 {56 return HIDGamepadProvider::singleton().stopMonitoringInput();57 }58 59 void UIGamepadProvider::platformStartMonitoringInput()60 {61 return HIDGamepadProvider::singleton().startMonitoringInput();62 }63 64 54 } 65 55 -
trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp
r204506 r204509 1287 1287 } 1288 1288 1289 void WebProcessPool::setInitialConnectedGamepads(const Vector<std::unique_ptr<UIGamepad>>& gamepads)1290 {1291 Vector<GamepadData> gamepadDatas;1292 gamepadDatas.resize(gamepads.size());1293 for (size_t i = 0; i < gamepads.size(); ++i) {1294 if (!gamepads[i])1295 continue;1296 gamepadDatas[i] = gamepads[i]->gamepadData();1297 }1298 1299 for (auto& process : m_processesUsingGamepads)1300 process->send(Messages::WebProcess::SetInitialGamepads(gamepadDatas), 0);1301 }1302 1303 1289 #endif // ENABLE(GAMEPAD) 1304 1290 -
trunk/Source/WebKit2/UIProcess/WebProcessPool.h
r204506 r204509 371 371 void gamepadConnected(const UIGamepad&); 372 372 void gamepadDisconnected(const UIGamepad&); 373 374 void setInitialConnectedGamepads(const Vector<std::unique_ptr<UIGamepad>>&);375 373 #endif 376 374 -
trunk/Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp
r204506 r204509 52 52 WebGamepadProvider::~WebGamepadProvider() 53 53 { 54 }55 56 void WebGamepadProvider::setInitialGamepads(const Vector<GamepadData>& gamepadDatas)57 {58 ASSERT(m_gamepads.isEmpty());59 60 m_gamepads.resize(gamepadDatas.size());61 m_rawGamepads.resize(gamepadDatas.size());62 for (size_t i = 0; i < gamepadDatas.size(); ++i) {63 if (gamepadDatas[i].isNull())64 continue;65 66 m_gamepads[i] = std::make_unique<WebGamepad>(gamepadDatas[i]);67 m_rawGamepads[i] = m_gamepads[i].get();68 }69 54 } 70 55 -
trunk/Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.h
r204506 r204509 47 47 void gamepadActivity(const Vector<GamepadData>&); 48 48 49 void setInitialGamepads(const Vector<GamepadData>&);50 51 49 private: 52 50 friend NeverDestroyed<WebGamepadProvider>; -
trunk/Source/WebKit2/WebProcess/WebProcess.cpp
r204506 r204509 1031 1031 #if ENABLE(GAMEPAD) 1032 1032 1033 void WebProcess::setInitialGamepads(const Vector<WebKit::GamepadData>& gamepadDatas)1034 {1035 WebGamepadProvider::singleton().setInitialGamepads(gamepadDatas);1036 }1037 1038 1033 void WebProcess::gamepadConnected(const GamepadData& gamepadData) 1039 1034 { -
trunk/Source/WebKit2/WebProcess/WebProcess.h
r204506 r204509 277 277 278 278 #if ENABLE(GAMEPAD) 279 void setInitialGamepads(const Vector<GamepadData>&);280 279 void gamepadConnected(const GamepadData&); 281 280 void gamepadDisconnected(unsigned index); -
trunk/Source/WebKit2/WebProcess/WebProcess.messages.in
r204506 r204509 104 104 105 105 #if ENABLE(GAMEPAD) 106 SetInitialGamepads(Vector<WebKit::GamepadData> gamepadDatas)107 106 GamepadConnected(struct WebKit::GamepadData gamepadData) 108 107 GamepadDisconnected(unsigned index)
Note: See TracChangeset
for help on using the changeset viewer.