glib/auto/main_loop.rs
1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use crate::{ffi, translate::*, MainContext};
6
7crate::wrapper! {
8 /// The `GMainLoop` struct is an opaque data type
9 /// representing the main event loop of a GLib or GTK application.
10 // rustdoc-stripper-ignore-next-stop
11 /// The `GMainLoop` struct is an opaque data type
12 /// representing the main event loop of a GLib or GTK application.
13 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
14 pub struct MainLoop(Shared<ffi::GMainLoop>);
15
16 match fn {
17 ref => |ptr| ffi::g_main_loop_ref(ptr),
18 unref => |ptr| ffi::g_main_loop_unref(ptr),
19 type_ => || ffi::g_main_loop_get_type(),
20 }
21}
22
23impl MainLoop {
24 /// Creates a new [`MainLoop`][crate::MainLoop] structure.
25 /// ## `context`
26 /// a main context (if `NULL`, the global-default
27 /// main context will be used).
28 /// ## `is_running`
29 /// set to true to indicate that the loop is running. This
30 /// is not very important since calling [`run()`][Self::run()] will set this
31 /// to true anyway.
32 ///
33 /// # Returns
34 ///
35 /// a new main loop
36 // rustdoc-stripper-ignore-next-stop
37 /// Creates a new [`MainLoop`][crate::MainLoop] structure.
38 /// ## `context`
39 /// a main context (if `NULL`, the global-default
40 /// main context will be used).
41 /// ## `is_running`
42 /// set to true to indicate that the loop is running. This
43 /// is not very important since calling [`run()`][Self::run()] will set this
44 /// to true anyway.
45 ///
46 /// # Returns
47 ///
48 /// a new main loop
49 #[doc(alias = "g_main_loop_new")]
50 pub fn new(context: Option<&MainContext>, is_running: bool) -> MainLoop {
51 unsafe {
52 from_glib_full(ffi::g_main_loop_new(
53 context.to_glib_none().0,
54 is_running.into_glib(),
55 ))
56 }
57 }
58
59 /// Returns the [`MainContext`][crate::MainContext] of @self.
60 ///
61 /// # Returns
62 ///
63 /// the [`MainContext`][crate::MainContext] of @self
64 // rustdoc-stripper-ignore-next-stop
65 /// Returns the [`MainContext`][crate::MainContext] of @self.
66 ///
67 /// # Returns
68 ///
69 /// the [`MainContext`][crate::MainContext] of @self
70 #[doc(alias = "g_main_loop_get_context")]
71 #[doc(alias = "get_context")]
72 pub fn context(&self) -> MainContext {
73 unsafe { from_glib_none(ffi::g_main_loop_get_context(self.to_glib_none().0)) }
74 }
75
76 /// Checks to see if the main loop is currently being run via
77 /// [`run()`][Self::run()].
78 ///
79 /// # Returns
80 ///
81 /// true if the main loop is currently being run, false otherwise
82 // rustdoc-stripper-ignore-next-stop
83 /// Checks to see if the main loop is currently being run via
84 /// [`run()`][Self::run()].
85 ///
86 /// # Returns
87 ///
88 /// true if the main loop is currently being run, false otherwise
89 #[doc(alias = "g_main_loop_is_running")]
90 pub fn is_running(&self) -> bool {
91 unsafe { from_glib(ffi::g_main_loop_is_running(self.to_glib_none().0)) }
92 }
93
94 /// Stops a [`MainLoop`][crate::MainLoop] from running. Any calls to
95 /// [`run()`][Self::run()] for the loop will return.
96 ///
97 /// Note that sources that have already been dispatched when
98 /// [`quit()`][Self::quit()] is called will still be executed.
99 // rustdoc-stripper-ignore-next-stop
100 /// Stops a [`MainLoop`][crate::MainLoop] from running. Any calls to
101 /// [`run()`][Self::run()] for the loop will return.
102 ///
103 /// Note that sources that have already been dispatched when
104 /// [`quit()`][Self::quit()] is called will still be executed.
105 #[doc(alias = "g_main_loop_quit")]
106 pub fn quit(&self) {
107 unsafe {
108 ffi::g_main_loop_quit(self.to_glib_none().0);
109 }
110 }
111
112 /// Runs a main loop until [`quit()`][Self::quit()] is called on the loop.
113 ///
114 /// If this is called from the thread of the loop’s [`MainContext`][crate::MainContext],
115 /// it will process events from the loop, otherwise it will
116 /// simply wait.
117 // rustdoc-stripper-ignore-next-stop
118 /// Runs a main loop until [`quit()`][Self::quit()] is called on the loop.
119 ///
120 /// If this is called from the thread of the loop’s [`MainContext`][crate::MainContext],
121 /// it will process events from the loop, otherwise it will
122 /// simply wait.
123 #[doc(alias = "g_main_loop_run")]
124 pub fn run(&self) {
125 unsafe {
126 ffi::g_main_loop_run(self.to_glib_none().0);
127 }
128 }
129}
130
131unsafe impl Send for MainLoop {}
132unsafe impl Sync for MainLoop {}