1 /* GIMP - The GNU Image Manipulation Program
2  * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis
3  *
4  * gimpwaitable.h
5  * Copyright (C) 2018 Ell
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef __GIMP_WAITABLE_H__
22 #define __GIMP_WAITABLE_H__
23 
24 
25 #define GIMP_TYPE_WAITABLE               (gimp_waitable_get_type ())
26 #define GIMP_IS_WAITABLE(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_WAITABLE))
27 #define GIMP_WAITABLE(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_WAITABLE, GimpWaitable))
28 #define GIMP_WAITABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GIMP_TYPE_WAITABLE, GimpWaitableInterface))
29 
30 
31 typedef struct _GimpWaitableInterface GimpWaitableInterface;
32 
33 struct _GimpWaitableInterface
34 {
35   GTypeInterface base_iface;
36 
37   /*  virtual functions  */
38   void       (* wait)       (GimpWaitable *waitable);
39   gboolean   (* try_wait)   (GimpWaitable *waitable);
40   gboolean   (* wait_until) (GimpWaitable *waitable,
41                              gint64        end_time);
42 };
43 
44 
45 GType      gimp_waitable_get_type   (void) G_GNUC_CONST;
46 
47 void       gimp_waitable_wait       (GimpWaitable *waitable);
48 gboolean   gimp_waitable_try_wait   (GimpWaitable *waitable);
49 gboolean   gimp_waitable_wait_until (GimpWaitable *waitable,
50                                      gint64        end_time);
51 gboolean   gimp_waitable_wait_for   (GimpWaitable *waitable,
52                                      gint64        wait_duration);
53 
54 
55 #endif  /* __GIMP_WAITABLE_H__ */
56