Quellcode durchsuchen

WebDriver: Add a `--force-cpu-painting` option

This launches the browser withb the `--force-cpu-backend` option, which
forces Skia to use the CPU backend rather than the GPU.
Tim Ledbetter vor 11 Monaten
Ursprung
Commit
6a19cffdde
1 geänderte Dateien mit 6 neuen und 2 gelöschten Zeilen
  1. 6 2
      Ladybird/WebDriver/main.cpp

+ 6 - 2
Ladybird/WebDriver/main.cpp

@@ -32,7 +32,7 @@ static ErrorOr<pid_t> launch_process(StringView application, ReadonlySpan<char c
     return result;
     return result;
 }
 }
 
 
-static ErrorOr<pid_t> launch_browser(ByteString const& socket_path, bool use_qt_networking)
+static ErrorOr<pid_t> launch_browser(ByteString const& socket_path, bool use_qt_networking, bool force_cpu_painting)
 {
 {
     auto arguments = Vector {
     auto arguments = Vector {
         "--webdriver-content-path",
         "--webdriver-content-path",
@@ -49,6 +49,8 @@ static ErrorOr<pid_t> launch_browser(ByteString const& socket_path, bool use_qt_
     arguments.append("--force-new-process");
     arguments.append("--force-new-process");
     if (use_qt_networking)
     if (use_qt_networking)
         arguments.append("--enable-qt-networking");
         arguments.append("--enable-qt-networking");
+    if (force_cpu_painting)
+        arguments.append("--force-cpu-painting");
 
 
     arguments.append("about:blank");
     arguments.append("about:blank");
 
 
@@ -75,12 +77,14 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     auto listen_address = "0.0.0.0"sv;
     auto listen_address = "0.0.0.0"sv;
     int port = 8000;
     int port = 8000;
     bool enable_qt_networking = false;
     bool enable_qt_networking = false;
+    bool force_cpu_painting = false;
 
 
     Core::ArgsParser args_parser;
     Core::ArgsParser args_parser;
     args_parser.add_option(listen_address, "IP address to listen on", "listen-address", 'l', "listen_address");
     args_parser.add_option(listen_address, "IP address to listen on", "listen-address", 'l', "listen_address");
     args_parser.add_option(port, "Port to listen on", "port", 'p', "port");
     args_parser.add_option(port, "Port to listen on", "port", 'p', "port");
     args_parser.add_option(certificates, "Path to a certificate file", "certificate", 'C', "certificate");
     args_parser.add_option(certificates, "Path to a certificate file", "certificate", 'C', "certificate");
     args_parser.add_option(enable_qt_networking, "Launch browser with Qt networking enabled", "enable-qt-networking");
     args_parser.add_option(enable_qt_networking, "Launch browser with Qt networking enabled", "enable-qt-networking");
+    args_parser.add_option(force_cpu_painting, "Launch browser with GPU painting disabled", "force-cpu-painting");
     args_parser.parse(arguments);
     args_parser.parse(arguments);
 
 
     auto ipv4_address = IPv4Address::from_string(listen_address);
     auto ipv4_address = IPv4Address::from_string(listen_address);
@@ -117,7 +121,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
         }
         }
 
 
         auto launch_browser_callback = [&](ByteString const& socket_path) {
         auto launch_browser_callback = [&](ByteString const& socket_path) {
-            return launch_browser(socket_path, enable_qt_networking);
+            return launch_browser(socket_path, enable_qt_networking, force_cpu_painting);
         };
         };
 
 
         auto maybe_client = WebDriver::Client::try_create(maybe_buffered_socket.release_value(), { move(launch_browser_callback), launch_headless_browser }, server);
         auto maybe_client = WebDriver::Client::try_create(maybe_buffered_socket.release_value(), { move(launch_browser_callback), launch_headless_browser }, server);