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 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_task_manager_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_thread_gen.go +14 -1 generated file: collapsed
A vendor/github.com/bnema/purego-cef/cef/cef_types_component_gen.go +45 -0 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_types_content_settings_gen.go +72 -79 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_types_gen.go +59 -52 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_urlrequest_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_v8_gen.go +166 -19 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_values_gen.go +62 -7 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_waitable_event_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_xml_reader_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/cef_zip_reader_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/test_cef_api_version_test__gen.go +86 -871 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/test_cef_test_server_gen.go +14 -1 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/test_cef_translator_test__gen.go +92 -50 generated file: collapsed
A vendor/github.com/bnema/purego-cef/cef/v8_helpers.go +19 -0 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/views_cef_browser_view_gen.go +15 -2 generated file: collapsed
M vendor/github.com/bnema/purego-cef/cef/views_cef_display_gen.go +17 -4
| @@ -12,7 +12,7 @@ import ( | |||
| 12 | 12 | portin "github.com/bnema/purego-cef/internal/ports/in" | |
| 13 | 13 | ) | |
| 14 | 14 | ||
| 15 | - | // Display This structure typically, but not always, corresponds to a physical display connected to the system. A fake Display may exist on a headless system, or a Display may correspond to a remote, virtual display. All size and position values are in density independent pixel (DIP) coordinates unless otherwise indicated. Methods must be called on the browser process UI thread unless otherwise indicated. For details on coordinate systems and usage see https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown- header-coordinate-systems | |
| 15 | + | // Display This structure typically, but not always, corresponds to a physical display connected to the system. A fake Display may exist on a headless system, or a Display may correspond to a remote, virtual display. All size and position values are in density independent pixel (DIP) coordinates unless otherwise indicated. Methods must be called on the browser process UI thread unless otherwise indicated. For details on coordinate systems and usage see https://chromiumembedded.github.io/cef/general_usage#coordinate-systems | |
| 16 | 16 | type Display = portin.Display | |
| 17 | 17 | ||
| 18 | 18 | // displayImpl is a reverse wrapper for a CEF-owned Display pointer. | |
| @@ -130,22 +130,35 @@ func wrapDisplay(ptr unsafe.Pointer) Display { | |||
| 130 | 130 | return impl | |
| 131 | 131 | } | |
| 132 | 132 | ||
| 133 | + | // takeDisplay adopts a CEF Display pointer whose reference is already owned by | |
| 134 | + | // the caller (as returned by a global factory function). Unlike wrapDisplay it | |
| 135 | + | // does NOT call AddRef, because the C API already transferred one reference to us. | |
| 136 | + | func takeDisplay(ptr unsafe.Pointer) Display { | |
| 137 | + | if ptr == nil { | |
| 138 | + | return nil | |
| 139 | + | } | |
| 140 | + | r := (*capi.CEFDisplayT)(ptr) | |
| 141 | + | impl := &displayImpl{rawPtr: r} | |
| 142 | + | runtime.SetFinalizer(impl, (*displayImpl).Release) | |
| 143 | + | return impl | |
| 144 | + | } | |
| 145 | + | ||
| 133 | 146 | // DisplayGetPrimary Returns the primary Display. | |
| 134 | 147 | func DisplayGetPrimary() Display { | |
| 135 | 148 | ret := capi.CEFDisplayGetPrimary() | |
| 136 | - | return wrapDisplay(ret) | |
| 149 | + | return takeDisplay(ret) | |
| 137 | 150 | } | |
| 138 | 151 | ||
| 139 | 152 | // DisplayGetNearestPoint Returns the Display nearest |point|. Set |input_pixel_coords| to true (1) if |point| is in pixel screen coordinates instead of DIP screen coordinates. | |
| 140 | 153 | func DisplayGetNearestPoint(point *Point, inputPixelCoords int32) Display { | |
| 141 | 154 | ret := capi.CEFDisplayGetNearestPoint(unsafe.Pointer(point), inputPixelCoords) | |
| 142 | - | return wrapDisplay(ret) | |
| 155 | + | return takeDisplay(ret) | |
| 143 | 156 | } | |
| 144 | 157 | ||
| 145 | 158 | // DisplayGetMatchingBounds Returns the Display that most closely intersects |bounds|. Set |input_pixel_coords| to true (1) if |bounds| is in pixel screen coordinates instead of DIP screen coordinates. | |
| 146 | 159 | func DisplayGetMatchingBounds(bounds *Rect, inputPixelCoords int32) Display { | |
| 147 | 160 | ret := capi.CEFDisplayGetMatchingBounds(unsafe.Pointer(bounds), inputPixelCoords) | |
| 148 | - | return wrapDisplay(ret) | |
| 161 | + | return takeDisplay(ret) | |
| 149 | 162 | } | |
| 150 | 163 | ||
| 151 | 164 | // DisplayGetCount Returns the total number of Displays. Mirrored displays are excluded; this function is intended to return the number of distinct, usable displays. | |
| @@ -12,7 +12,7 @@ import ( | |||||
| 12 | portin "github.com/bnema/purego-cef/internal/ports/in" | 12 | portin "github.com/bnema/purego-cef/internal/ports/in" | ||
| 13 | ) | 13 | ) | ||
| 14 | 14 | ||||
| 15 | - | // Display This structure typically, but not always, corresponds to a physical display connected to the system. A fake Display may exist on a headless system, or a Display may correspond to a remote, virtual display. All size and position values are in density independent pixel (DIP) coordinates unless otherwise indicated. Methods must be called on the browser process UI thread unless otherwise indicated. For details on coordinate systems and usage see https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown- header-coordinate-systems | 15 | + | // Display This structure typically, but not always, corresponds to a physical display connected to the system. A fake Display may exist on a headless system, or a Display may correspond to a remote, virtual display. All size and position values are in density independent pixel (DIP) coordinates unless otherwise indicated. Methods must be called on the browser process UI thread unless otherwise indicated. For details on coordinate systems and usage see https://chromiumembedded.github.io/cef/general_usage#coordinate-systems |
| 16 | type Display = portin.Display | 16 | type Display = portin.Display | ||
| 17 | 17 | ||||
| 18 | // displayImpl is a reverse wrapper for a CEF-owned Display pointer. | 18 | // displayImpl is a reverse wrapper for a CEF-owned Display pointer. | ||
| @@ -130,22 +130,35 @@ func wrapDisplay(ptr unsafe.Pointer) Display { | |||||
| 130 | return impl | 130 | return impl | ||
| 131 | } | 131 | } | ||
| 132 | 132 | ||||
| 133 | + | // takeDisplay adopts a CEF Display pointer whose reference is already owned by | |||
| 134 | + | // the caller (as returned by a global factory function). Unlike wrapDisplay it | |||
| 135 | + | // does NOT call AddRef, because the C API already transferred one reference to us. | |||
| 136 | + | func takeDisplay(ptr unsafe.Pointer) Display { | |||
| 137 | + | if ptr == nil { | |||
| 138 | + | return nil | |||
| 139 | + | } | |||
| 140 | + | r := (*capi.CEFDisplayT)(ptr) | |||
| 141 | + | impl := &displayImpl{rawPtr: r} | |||
| 142 | + | runtime.SetFinalizer(impl, (*displayImpl).Release) | |||
| 143 | + | return impl | |||
| 144 | + | } | |||
| 145 | + | ||||
| 133 | // DisplayGetPrimary Returns the primary Display. | 146 | // DisplayGetPrimary Returns the primary Display. | ||
| 134 | func DisplayGetPrimary() Display { | 147 | func DisplayGetPrimary() Display { | ||
| 135 | ret := capi.CEFDisplayGetPrimary() | 148 | ret := capi.CEFDisplayGetPrimary() | ||
| 136 | - | return wrapDisplay(ret) | 149 | + | return takeDisplay(ret) |
| 137 | } | 150 | } | ||
| 138 | 151 | ||||
| 139 | // DisplayGetNearestPoint Returns the Display nearest |point|. Set |input_pixel_coords| to true (1) if |point| is in pixel screen coordinates instead of DIP screen coordinates. | 152 | // DisplayGetNearestPoint Returns the Display nearest |point|. Set |input_pixel_coords| to true (1) if |point| is in pixel screen coordinates instead of DIP screen coordinates. | ||
| 140 | func DisplayGetNearestPoint(point *Point, inputPixelCoords int32) Display { | 153 | func DisplayGetNearestPoint(point *Point, inputPixelCoords int32) Display { | ||
| 141 | ret := capi.CEFDisplayGetNearestPoint(unsafe.Pointer(point), inputPixelCoords) | 154 | ret := capi.CEFDisplayGetNearestPoint(unsafe.Pointer(point), inputPixelCoords) | ||
| 142 | - | return wrapDisplay(ret) | 155 | + | return takeDisplay(ret) |
| 143 | } | 156 | } | ||
| 144 | 157 | ||||
| 145 | // DisplayGetMatchingBounds Returns the Display that most closely intersects |bounds|. Set |input_pixel_coords| to true (1) if |bounds| is in pixel screen coordinates instead of DIP screen coordinates. | 158 | // DisplayGetMatchingBounds Returns the Display that most closely intersects |bounds|. Set |input_pixel_coords| to true (1) if |bounds| is in pixel screen coordinates instead of DIP screen coordinates. | ||
| 146 | func DisplayGetMatchingBounds(bounds *Rect, inputPixelCoords int32) Display { | 159 | func DisplayGetMatchingBounds(bounds *Rect, inputPixelCoords int32) Display { | ||
| 147 | ret := capi.CEFDisplayGetMatchingBounds(unsafe.Pointer(bounds), inputPixelCoords) | 160 | ret := capi.CEFDisplayGetMatchingBounds(unsafe.Pointer(bounds), inputPixelCoords) | ||
| 148 | - | return wrapDisplay(ret) | 161 | + | return takeDisplay(ret) |
| 149 | } | 162 | } | ||
| 150 | 163 | ||||
| 151 | // DisplayGetCount Returns the total number of Displays. Mirrored displays are excluded; this function is intended to return the number of distinct, usable displays. | 164 | // DisplayGetCount Returns the total number of Displays. Mirrored displays are excluded; this function is intended to return the number of distinct, usable displays. | ||