Skip to content

Commit acc834d

Browse files
elmarcobilelmoussaoui
authored andcommitted
gdk: bind GLTextureBuilder::build
Fixes: #1412
1 parent 8126606 commit acc834d

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

gdk4/Gir.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,9 @@ generate_builder = false
494494
[[object.function.parameter]]
495495
name = "region"
496496
const = true
497+
[[object.function]]
498+
name = "build"
499+
manual = true
497500

498501
[[object]]
499502
name = "Gdk.KeyEvent"

gdk4/src/auto/gl_texture_builder.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ impl GLTextureBuilder {
2626
unsafe { from_glib_full(ffi::gdk_gl_texture_builder_new()) }
2727
}
2828

29-
//#[doc(alias = "gdk_gl_texture_builder_build")]
30-
//pub fn build(&self, data: /*Unimplemented*/Option<Basic: Pointer>) -> Texture {
31-
// unsafe { TODO: call ffi:gdk_gl_texture_builder_build() }
32-
//}
33-
3429
#[doc(alias = "gdk_gl_texture_builder_get_context")]
3530
#[doc(alias = "get_context")]
3631
pub fn context(&self) -> Option<GLContext> {

gdk4/src/gl_texture_builder.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Take a look at the license at the top of the repository in the LICENSE file.
2+
3+
use crate::{GLTextureBuilder, Texture};
4+
use glib::translate::*;
5+
6+
impl GLTextureBuilder {
7+
#[doc(alias = "gdk_gl_texture_builder_build")]
8+
pub unsafe fn build(&self) -> Texture {
9+
from_glib_full(ffi::gdk_gl_texture_builder_build(
10+
self.to_glib_none().0,
11+
None,
12+
std::ptr::null_mut(),
13+
))
14+
}
15+
16+
#[doc(alias = "gdk_gl_texture_builder_build")]
17+
pub unsafe fn build_with_release_func<F: FnOnce() + 'static>(
18+
&self,
19+
release_func: F,
20+
) -> Texture {
21+
unsafe extern "C" fn destroy_closure<F: FnOnce() + 'static>(func: glib::ffi::gpointer) {
22+
let released_func = Box::<F>::from_raw(func as *mut _);
23+
released_func();
24+
}
25+
let released_func = Box::new(release_func);
26+
from_glib_full(ffi::gdk_gl_texture_builder_build(
27+
self.to_glib_none().0,
28+
Some(destroy_closure::<F>),
29+
Box::into_raw(released_func) as glib::ffi::gpointer,
30+
))
31+
}
32+
}

gdk4/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ mod drop;
8181
mod focus_event;
8282
mod functions;
8383
mod gl_texture;
84+
#[cfg(any(feature = "v4_12", docsrs))]
85+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_12")))]
86+
mod gl_texture_builder;
8487
mod grab_broken_event;
8588
mod key_event;
8689
mod keymap_key;

0 commit comments

Comments
 (0)