chore(deps): bump purego-cef to v0.14.1
v0.14.0 pinned the CEF API 15000 contract and fixed the struct ABI corruption that made BrowserSettings.BackgroundColor land on chrome_status_bubble (transparent windowless canvas). v0.14.1 restores the global function bindings dropped by that regeneration (DictionaryValueCreate, V8ContextGetCurrentContext, all *Create factories) and fixes global factory ownership so created objects are adopted without a leaked reference. This makes the white-canvas fix in this branch effective: the opaque white BrowserSettings.BackgroundColor now actually reaches libcef.
- commit
- 902c404508da47722a324d2f14b2a4cfc04a2812
- author
- brice · · 2026-07-21 19:07 UTC
- parent
- 1dc7dd4
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
75 files · +1836 -1983
M go.mod +1 -1
| @@ -6,7 +6,7 @@ require ( | |||
| 6 | 6 | github.com/a-h/templ v0.3.1020 | |
| 7 | 7 | github.com/andybalholm/brotli v1.2.2 | |
| 8 | 8 | github.com/bnema/purego v0.11.0-bnema.4 | |
| 9 | - | github.com/bnema/purego-cef v0.13.4 | |
| 9 | + | github.com/bnema/purego-cef v0.14.1 | |
| 10 | 10 | github.com/bnema/purego-cef2gtk v0.8.5 | |
| 11 | 11 | github.com/bnema/purego-pipewire v0.1.5 | |
| 12 | 12 | github.com/bnema/purego-sqlite v0.1.4 | |
| @@ -6,7 +6,7 @@ require ( | |||||
| 6 | github.com/a-h/templ v0.3.1020 | 6 | github.com/a-h/templ v0.3.1020 | ||
| 7 | github.com/andybalholm/brotli v1.2.2 | 7 | github.com/andybalholm/brotli v1.2.2 | ||
| 8 | github.com/bnema/purego v0.11.0-bnema.4 | 8 | github.com/bnema/purego v0.11.0-bnema.4 | ||
| 9 | - | github.com/bnema/purego-cef v0.13.4 | 9 | + | github.com/bnema/purego-cef v0.14.1 |
| 10 | github.com/bnema/purego-cef2gtk v0.8.5 | 10 | github.com/bnema/purego-cef2gtk v0.8.5 | ||
| 11 | github.com/bnema/purego-pipewire v0.1.5 | 11 | github.com/bnema/purego-pipewire v0.1.5 | ||
| 12 | github.com/bnema/purego-sqlite v0.1.4 | 12 | github.com/bnema/purego-sqlite v0.1.4 | ||
M go.sum +2 -2 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_browser_gen.go +15 -2 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_command_line_gen.go +15 -2 generated file: collapsed
A vendor/github.com/bnema/purego-cef/cef/cef_component_updater_gen.go +323 -0 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_cookie_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_drag_data_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_image_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_media_router_gen.go +24 -41 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_menu_model_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_parser_gen.go +10 -4 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_preference_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_print_settings_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_process_message_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_request_context_gen.go +16 -3 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_request_gen.go +42 -3 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_resource_bundle_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_response_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_shared_memory_region_gen.go +3 -3 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_shared_process_message_builder_gen.go +20 -4 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_stream_gen.go +34 -5 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_task_gen.go +15 -2
| @@ -206,16 +206,29 @@ func wrapTaskRunner(ptr unsafe.Pointer) TaskRunner { | |||
| 206 | 206 | return impl | |
| 207 | 207 | } | |
| 208 | 208 | ||
| 209 | + | // takeTaskRunner adopts a CEF TaskRunner pointer whose reference is already owned by | |
| 210 | + | // the caller (as returned by a global factory function). Unlike wrapTaskRunner it | |
| 211 | + | // does NOT call AddRef, because the C API already transferred one reference to us. | |
| 212 | + | func takeTaskRunner(ptr unsafe.Pointer) TaskRunner { | |
| 213 | + | if ptr == nil { | |
| 214 | + | return nil | |
| 215 | + | } | |
| 216 | + | r := (*capi.CEFTaskRunnerT)(ptr) | |
| 217 | + | impl := &taskRunnerImpl{rawPtr: r} | |
| 218 | + | runtime.SetFinalizer(impl, (*taskRunnerImpl).Release) | |
| 219 | + | return impl | |
| 220 | + | } | |
| 221 | + | ||
| 209 | 222 | // TaskRunnerGetForCurrentThread Returns the task runner for the current thread. Only CEF threads will have task runners. An NULL reference will be returned if this function is called on an invalid thread. | |
| 210 | 223 | func TaskRunnerGetForCurrentThread() TaskRunner { | |
| 211 | 224 | ret := capi.CEFTaskRunnerGetForCurrentThread() | |
| 212 | - | return wrapTaskRunner(ret) | |
| 225 | + | return takeTaskRunner(ret) | |
| 213 | 226 | } | |
| 214 | 227 | ||
| 215 | 228 | // TaskRunnerGetForThread Returns the task runner for the specified CEF thread. | |
| 216 | 229 | func TaskRunnerGetForThread(threadid ThreadID) TaskRunner { | |
| 217 | 230 | ret := capi.CEFTaskRunnerGetForThread(capi.CEFThreadIDT(threadid)) | |
| 218 | - | return wrapTaskRunner(ret) | |
| 231 | + | return takeTaskRunner(ret) | |
| 219 | 232 | } | |
| 220 | 233 | ||
| 221 | 234 | // CurrentlyOn Returns true (1) if called on the specified thread. Equivalent to using cef_task_runner_t::GetForThread(threadId)->belongs_to_current_thread(). | |
| @@ -206,16 +206,29 @@ func wrapTaskRunner(ptr unsafe.Pointer) TaskRunner { | |||||
| 206 | return impl | 206 | return impl | ||
| 207 | } | 207 | } | ||
| 208 | 208 | ||||
| 209 | + | // takeTaskRunner adopts a CEF TaskRunner pointer whose reference is already owned by | |||
| 210 | + | // the caller (as returned by a global factory function). Unlike wrapTaskRunner it | |||
| 211 | + | // does NOT call AddRef, because the C API already transferred one reference to us. | |||
| 212 | + | func takeTaskRunner(ptr unsafe.Pointer) TaskRunner { | |||
| 213 | + | if ptr == nil { | |||
| 214 | + | return nil | |||
| 215 | + | } | |||
| 216 | + | r := (*capi.CEFTaskRunnerT)(ptr) | |||
| 217 | + | impl := &taskRunnerImpl{rawPtr: r} | |||
| 218 | + | runtime.SetFinalizer(impl, (*taskRunnerImpl).Release) | |||
| 219 | + | return impl | |||
| 220 | + | } | |||
| 221 | + | ||||
| 209 | // TaskRunnerGetForCurrentThread Returns the task runner for the current thread. Only CEF threads will have task runners. An NULL reference will be returned if this function is called on an invalid thread. | 222 | // TaskRunnerGetForCurrentThread Returns the task runner for the current thread. Only CEF threads will have task runners. An NULL reference will be returned if this function is called on an invalid thread. | ||
| 210 | func TaskRunnerGetForCurrentThread() TaskRunner { | 223 | func TaskRunnerGetForCurrentThread() TaskRunner { | ||
| 211 | ret := capi.CEFTaskRunnerGetForCurrentThread() | 224 | ret := capi.CEFTaskRunnerGetForCurrentThread() | ||
| 212 | - | return wrapTaskRunner(ret) | 225 | + | return takeTaskRunner(ret) |
| 213 | } | 226 | } | ||
| 214 | 227 | ||||
| 215 | // TaskRunnerGetForThread Returns the task runner for the specified CEF thread. | 228 | // TaskRunnerGetForThread Returns the task runner for the specified CEF thread. | ||
| 216 | func TaskRunnerGetForThread(threadid ThreadID) TaskRunner { | 229 | func TaskRunnerGetForThread(threadid ThreadID) TaskRunner { | ||
| 217 | ret := capi.CEFTaskRunnerGetForThread(capi.CEFThreadIDT(threadid)) | 230 | ret := capi.CEFTaskRunnerGetForThread(capi.CEFThreadIDT(threadid)) | ||
| 218 | - | return wrapTaskRunner(ret) | 231 | + | return takeTaskRunner(ret) |
| 219 | } | 232 | } | ||
| 220 | 233 | ||||
| 221 | // CurrentlyOn Returns true (1) if called on the specified thread. Equivalent to using cef_task_runner_t::GetForThread(threadId)->belongs_to_current_thread(). | 234 | // CurrentlyOn Returns true (1) if called on the specified thread. Equivalent to using cef_task_runner_t::GetForThread(threadId)->belongs_to_current_thread(). | ||