Skip to content
This repository has been archived by the owner on Jun 8, 2021. It is now read-only.

Add stop_emission() #128

Merged
merged 4 commits into from Jun 17, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/lib.rs
Expand Up @@ -85,6 +85,10 @@ pub use object::{
Object,
ObjectExt,
};
pub use signal::{
signal_stop_emission,
signal_stop_emission_by_name
};
pub use source::{
CallbackGuard,
Continue,
Expand Down
2 changes: 1 addition & 1 deletion src/prelude.rs
@@ -1,4 +1,4 @@
//! Traits and essential types inteded for blanket imports.
//! Traits and essential types intended for blanket imports.

pub use {
Cast,
Expand Down
16 changes: 15 additions & 1 deletion src/signal.rs
Expand Up @@ -4,9 +4,11 @@

//! `IMPL` Low level signal support.

use libc::c_void;
use libc::{c_void, c_uint};

use gobject_ffi::{self, GCallback};
use glib_ffi::GQuark;
use object::{IsA, Object};
use source::CallbackGuard;
use translate::ToGlibPtr;

Expand All @@ -19,6 +21,18 @@ pub unsafe fn connect(receiver: *mut gobject_ffi::GObject, signal_name: &str, tr
handle
}

pub fn signal_stop_emission<T: IsA<Object>>(instance: &T, signal_id: u32, detail: GQuark) {
unsafe {
gobject_ffi::g_signal_stop_emission(instance.to_glib_none().0, signal_id as c_uint, detail);
}
}

pub fn signal_stop_emission_by_name<T: IsA<Object>>(instance: &T, signal_name: &str) {
unsafe {
gobject_ffi::g_signal_stop_emission_by_name(instance.to_glib_none().0, signal_name.to_glib_none().0);
}
}

unsafe extern "C" fn destroy_closure(ptr: *mut c_void, _: *mut gobject_ffi::GClosure) {
let _guard = CallbackGuard::new();
// destroy
Expand Down