serenity/Ladybird
Timothy Flynn 1c4dd0caad Ladybird+LibWeb+WebConent: Drive audio in Ladybird off the main thread
The main thread in the WebContent process is often busy with layout and
running JavaScript. This can cause audio to sound jittery and crack. To
avoid this behavior, we now drive audio on a secondary thread.

Note: Browser on Serenity uses AudioServer, the connection for which is
already handled on a secondary thread within LibAudio. So this only
applies to Lagom.

Rather than using LibThreading, our hands are tied to QThread for now.
Internally, the Qt media objects use a QTimer, which is forbidden from
running on a thread that is not a QThread (the debug console is spammed
with messages pointing this out). Ideally, in the future AudioServer
will be able to run for non-Serenity platforms, and most of this can be
aligned with the Serenity implementation.
2023-06-21 06:14:15 +02:00
..
android Ladybird/Meta: Add Android build 2022-12-25 07:58:58 -07:00
cmake Ladybird: Propagate autoplay settings to the WebContent process 2023-04-18 16:30:02 +02:00
Icons Ladybird: Use the DALL-E ladybird globe as the application icon 2023-05-27 17:26:29 +02:00
SQLServer Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
WebContent Ladybird+LibWeb+WebConent: Drive audio in Ladybird off the main thread 2023-06-21 06:14:15 +02:00
WebDriver Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
.gitignore Ladybird/Meta: Add Android build 2022-12-25 07:58:58 -07:00
AndroidPlatform.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
AudioCodecPluginLadybird.cpp Ladybird+LibWeb+WebConent: Drive audio in Ladybird off the main thread 2023-06-21 06:14:15 +02:00
AudioCodecPluginLadybird.h Ladybird+LibWeb+WebConent: Drive audio in Ladybird off the main thread 2023-06-21 06:14:15 +02:00
BrowserWindow.cpp Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
BrowserWindow.h Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
CMakeLists.txt Ladybird+LibWeb+WebContent: Create a platform plugin for playing audio 2023-06-13 06:14:01 +02:00
ConsoleWidget.cpp Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
ConsoleWidget.h Ladybird: Implement the JavaScript console using a WebContentView 2023-04-23 14:30:23 +02:00
EventLoopImplementationQt.cpp LibCore: Remove unused EventLoopManager::wake() 2023-04-26 19:17:04 +01:00
EventLoopImplementationQt.h LibCore: Remove unused EventLoopManager::wake() 2023-04-26 19:17:04 +01:00
FontPluginQt.cpp LibWeb: Add --layout-test-mode flag to HeadlessBrowser 2023-05-08 14:47:52 +02:00
FontPluginQt.h LibWeb: Add --layout-test-mode flag to HeadlessBrowser 2023-05-08 14:47:52 +02:00
HelperProcess.cpp Ladybird: Look for helper processes at {app_dir}/{helper}/{helper} 2023-05-31 13:24:49 +02:00
HelperProcess.h Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
ImageCodecPluginLadybird.cpp Ladybird: Simplify ImageCodecPluginLadybird a bit 2023-06-02 09:57:20 +01:00
ImageCodecPluginLadybird.h Ladybird: Implement the Web::Platform::ImageCodecPlugin interface 2022-12-25 07:58:58 -07:00
Info.plist Ladybird: Improve Xcode generator experience and copy helpers to bundle 2023-03-28 09:18:50 +01:00
InspectorWidget.cpp Ladybird: Allow right clicking and inspecting elements 2023-05-09 06:16:58 +02:00
InspectorWidget.h Ladybird: Allow right clicking and inspecting elements 2023-05-09 06:16:58 +02:00
ladybird.nix Toolchain+Ladybird: Declare dependencies in correct nix file 2023-06-04 10:01:34 +02:00
ladybird.qrc Ladybird: Use the DALL-E ladybird globe as the application icon 2023-05-27 17:26:29 +02:00
LocationEdit.cpp Ladybird: Add placeholder to LocationEdit 2023-05-28 05:47:20 -06:00
LocationEdit.h Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
main.cpp Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
ModelTranslator.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
ModelTranslator.h Ladybird: Allow right clicking and inspecting elements 2023-05-09 06:16:58 +02:00
README.md Documentation: Homogenize Ladybird build instructions 2023-05-08 20:53:25 -06:00
RequestManagerQt.cpp Ladybird: Stop telling Qt to use HTTP pipelining 2023-05-06 12:49:12 +02:00
RequestManagerQt.h Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
Settings.cpp Ladybird: Use the same default new tab page URL as Browser 2023-06-08 07:22:00 +02:00
Settings.h Ladybird: Remove the "home" icon from the toolbar (and the concept) 2023-05-05 16:58:08 +02:00
SettingsDialog.cpp Ladybird: Remove the "home" icon from the toolbar (and the concept) 2023-05-05 16:58:08 +02:00
SettingsDialog.h Ladybird: Remove the "home" icon from the toolbar (and the concept) 2023-05-05 16:58:08 +02:00
Tab.cpp Ladybird: Add context menu items to directly open audio files 2023-06-19 17:42:55 +02:00
Tab.h Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
Utilities.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
Utilities.h Ladybird: Add a utility to create a QString from an AK::String 2023-03-13 22:05:22 +00:00
WebContentView.cpp Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
WebContentView.h Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
WebSocketClientManagerLadybird.cpp LibWeb+LibWebSocket: DOM WebSocket subprotocol support 2023-02-02 14:41:34 +01:00
WebSocketClientManagerLadybird.h LibWeb+LibWebSocket: DOM WebSocket subprotocol support 2023-02-02 14:41:34 +01:00
WebSocketImplQt.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
WebSocketImplQt.h Ladybird: Update for AK::{String => DeprecatedString} rename 2022-12-25 07:58:58 -07:00
WebSocketLadybird.cpp LibWeb+LibWebSocket: DOM WebSocket subprotocol support 2023-02-02 14:41:34 +01:00
WebSocketLadybird.h LibWeb+LibWebSocket: DOM WebSocket subprotocol support 2023-02-02 14:41:34 +01:00

Ladybird

Ladybird is a web browser built on the LibWeb and LibJS engines from SerenityOS with a cross-platform GUI in Qt.

For more information about Ladybird, see this blog post.

See build instructions.