aboutsummaryrefslogtreecommitdiff
path: root/src/sfwk-wpe.c
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-05-19 13:23:03 +1200
committerArslaan Pathan <[email protected]>2026-05-19 13:23:03 +1200
commit31eeb7cd7e1302b8315356acac4eca3ad8b4da6a (patch)
treef9f1bc4c0af873bd6e461b3258e89ed864aa5b62 /src/sfwk-wpe.c
parent2bb9744b9e9f6f5328f809de73f0e1680a0ba7e8 (diff)
downloadsaffronwebkit-31eeb7cd7e1302b8315356acac4eca3ad8b4da6a.tar.xz
saffronwebkit-31eeb7cd7e1302b8315356acac4eca3ad8b4da6a.zip
Minor improvements, start having a look at audio, fix the flashing0.0.1
Diffstat (limited to 'src/sfwk-wpe.c')
-rw-r--r--src/sfwk-wpe.c35
1 files changed, 11 insertions, 24 deletions
diff --git a/src/sfwk-wpe.c b/src/sfwk-wpe.c
index ee6281e..f967278 100644
--- a/src/sfwk-wpe.c
+++ b/src/sfwk-wpe.c
@@ -5,8 +5,8 @@
#include "glib-object.h"
#include "glib.h"
+#include "glibconfig.h"
#include "saffron_api.h"
-#include "wpe/wpe-platform.h"
#include <EGL/egl.h>
#include <SDL3/SDL_video.h>
#include <saffron.h>
@@ -43,11 +43,11 @@ static void on_load_changed(WebKitWebView *web_view, WebKitLoadEvent load_event,
case WEBKIT_LOAD_COMMITTED: event_str = "COMMITTED"; break;
case WEBKIT_LOAD_FINISHED: event_str = "FINISHED"; break;
}
- g_debug("=== WEBKIT LOAD EVENT: %s ===", event_str);
+ g_debug("[sfwk] WebKit load event: %s", event_str);
}
static void on_load_failed(WebKitWebView *web_view, WebKitLoadEvent load_event, const char *failing_uri, GError *error, gpointer userdata) {
- g_warning("=== WEBKIT LOAD FAILED === URI: %s, Error: %s", failing_uri, error->message);
+ g_warning("[sfwk] WebKit load failed (T_T): URI: %s, Error: %s", failing_uri, error->message);
}
static void
@@ -122,16 +122,9 @@ wpe_toplevel_sdl3_render(WPEToplevelSDL3 *self, SDL_Renderer* renderer, WPEView
if (image != EGL_NO_IMAGE)
display->destroyImage(display->egl_display, image);
- // At this point the SDL_Texture contains the data to render.
- if (!SDL_RenderTexture(renderer, self->texture, NULL, NULL)) {
- g_set_error(error, WPE_VIEW_ERROR, WPE_VIEW_ERROR_RENDER_FAILED,
- "Cannot render SDL texture: %s", SDL_GetError());
- return FALSE;
- }
+ // don't render here because draw function does stuff
} else {
- g_debug("SFWK: No buffer found, clearing to white");
- SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE);
- SDL_RenderClear(renderer);
+ g_debug("SFWK: no buffer found T_T");
}
return TRUE;
@@ -567,17 +560,6 @@ static bool sfwk_webview_ensure_initialized(SFWKWebView* webview) {
WPEDisplaySDL3 *display_impl = WPE_DISPLAY_SDL3(webview->context->display);
display_impl->egl_display = saved_egl_display;
- // webview->wpe.toplevel = wpe_toplevel_sdl3_new(webview->context->display);
- // webview->wpe.wpeview = wpe_view_sdl3_new(webview->context->display);
- // ((WPEViewSDL3*)webview->wpe.wpeview)->userdata = webview;
- // wpe_view_set_toplevel(webview->wpe.wpeview, webview->wpe.toplevel);
- //
- // g_debug("Setting toplevel size to %dx%d", webview->w, webview->h);
- // wpe_toplevel_resize(webview->wpe.toplevel, webview->w, webview->h);
- //
- // webview->wpe.wkwebview = g_object_new(WEBKIT_TYPE_WEB_VIEW, "display", webview->context->display, NULL);
- // g_debug("sfwk: WebKitWebView created: %p", webview->wpe.wkwebview);
-
webview->wpe.wkwebview = g_object_new(WEBKIT_TYPE_WEB_VIEW, "display", webview->context->display, NULL);
webview->wpe.wpeview = webkit_web_view_get_wpe_view(webview->wpe.wkwebview);
((WPEViewSDL3*)webview->wpe.wpeview)->userdata = webview;
@@ -586,6 +568,10 @@ static bool sfwk_webview_ensure_initialized(SFWKWebView* webview) {
wpe_toplevel_resize(webview->wpe.toplevel, webview->w, webview->h);
+ // TODO: Add audio handlers around here
+ WebKitSettings* settings = webkit_web_view_get_settings(webview->wpe.wkwebview);
+ webkit_settings_set_enable_webaudio(settings, TRUE);
+
g_signal_connect(webview->wpe.wkwebview, "load-changed", G_CALLBACK(on_load_changed), webview);
g_signal_connect(webview->wpe.wkwebview, "load-failed", G_CALLBACK(on_load_failed), webview);
if (webview->url) {
@@ -766,6 +752,7 @@ SFWKWebView* sfwk_webview_new(SFWKContext* context, const char* url, int w, int
saffron_widget_init((SaffronWidget*)webview);
((SaffronWidget*)webview)->type = SAFFRON_WIDGET_UNKNOWN; // saffron does not have a builtin for webviews, and i cant be bothered to add one because "if you have to edit the library, it's not extensible" - arslaan 2026
+ // TODO for saffron: Maybe instead of checking type enums, just have the objects themselves have pre-layout/post-layout functions. thats PEAK
((SaffronWidget*)webview)->w = webview->w = w;
((SaffronWidget*)webview)->h = webview->h = h;
((SaffronWidget*)webview)->draw = sfwk_webview_draw;
@@ -777,7 +764,7 @@ SFWKWebView* sfwk_webview_new(SFWKContext* context, const char* url, int w, int
webview->wpe.initialized = FALSE;
webview->window = NULL;
- // ensure initialized will init this later
+ // ensure initialized will init this later ^_^
return webview;
}