Changeset 295600 in webkit


Ignore:
Timestamp:
Jun 16, 2022 11:08:23 AM (2 years ago)
Author:
pvollan@apple.com
Message:

Handle display reconfiguration on main thread
https://bugs.webkit.org/show_bug.cgi?id=241683
<rdar://83417447>

Reviewed by Simon Fraser.

It is not safe to handle this on a non main thread, since we send messages to the WebContent and GPU process.

  • Source/WebKit/UIProcess/WebProcessPool.cpp:

(WebKit::displayReconfigurationCallBack):

Canonical link: https://commits.webkit.org/251605@main

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r295560 r295600  
    683683static void displayReconfigurationCallBack(CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo)
    684684{
    685     auto screenProperties = WebCore::collectScreenProperties();
    686     for (auto& processPool : WebProcessPool::allProcessPools()) {
    687         processPool->sendToAllProcesses(Messages::WebProcess::SetScreenProperties(screenProperties));
    688         processPool->sendToAllProcesses(Messages::WebProcess::DisplayConfigurationChanged(display, flags));
    689         if (auto gpuProcess = processPool->gpuProcess()) {
    690             gpuProcess->displayConfigurationChanged(display, flags);
    691             gpuProcess->setScreenProperties(screenProperties);
     685    RunLoop::main().dispatch([display, flags]() {
     686        auto screenProperties = WebCore::collectScreenProperties();
     687        for (auto& processPool : WebProcessPool::allProcessPools()) {
     688            processPool->sendToAllProcesses(Messages::WebProcess::SetScreenProperties(screenProperties));
     689            processPool->sendToAllProcesses(Messages::WebProcess::DisplayConfigurationChanged(display, flags));
     690            if (auto gpuProcess = processPool->gpuProcess()) {
     691                gpuProcess->displayConfigurationChanged(display, flags);
     692                gpuProcess->setScreenProperties(screenProperties);
     693            }
    692694        }
    693     }
     695    });
    694696}
    695697
Note: See TracChangeset for help on using the changeset viewer.