1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 
3 #ifndef META_WINDOW_ACTOR_PRIVATE_H
4 #define META_WINDOW_ACTOR_PRIVATE_H
5 
6 #include <X11/extensions/Xdamage.h>
7 
8 #include "compositor/meta-plugin-manager.h"
9 #include "compositor/meta-surface-actor.h"
10 #include "meta/compositor-mutter.h"
11 
12 struct _MetaWindowActorClass
13 {
14   ClutterActorClass parent;
15 
16   void (*frame_complete) (MetaWindowActor  *actor,
17                           ClutterFrameInfo *frame_info,
18                           int64_t           presentation_time);
19 
20   void (*assign_surface_actor) (MetaWindowActor  *actor,
21                                 MetaSurfaceActor *surface_actor);
22 
23   void (*queue_frame_drawn) (MetaWindowActor *actor,
24                              gboolean         skip_sync_delay);
25 
26   void (*before_paint) (MetaWindowActor  *actor,
27                         ClutterStageView *stage_view);
28   void (*after_paint) (MetaWindowActor  *actor,
29                        ClutterStageView *stage_view);
30 
31   void (*queue_destroy) (MetaWindowActor *actor);
32   void (*set_frozen) (MetaWindowActor *actor,
33                       gboolean         frozen);
34   void (*update_regions) (MetaWindowActor *actor);
35   gboolean (*can_freeze_commits) (MetaWindowActor *actor);
36 };
37 
38 typedef enum
39 {
40   META_WINDOW_ACTOR_CHANGE_SIZE     = 1 << 0,
41   META_WINDOW_ACTOR_CHANGE_POSITION = 1 << 1
42 } MetaWindowActorChanges;
43 
44 void meta_window_actor_queue_destroy   (MetaWindowActor *self);
45 
46 void meta_window_actor_show (MetaWindowActor *self,
47                              MetaCompEffect   effect);
48 void meta_window_actor_hide (MetaWindowActor *self,
49                              MetaCompEffect   effect);
50 
51 void meta_window_actor_size_change   (MetaWindowActor *self,
52                                       MetaSizeChange   which_change,
53                                       MetaRectangle   *old_frame_rect,
54                                       MetaRectangle   *old_buffer_rect);
55 
56 void meta_window_actor_before_paint   (MetaWindowActor    *self,
57                                        ClutterStageView   *stage_view);
58 void meta_window_actor_after_paint    (MetaWindowActor    *self,
59                                        ClutterStageView   *stage_view);
60 void meta_window_actor_frame_complete (MetaWindowActor    *self,
61                                        ClutterFrameInfo   *frame_info,
62                                        gint64              presentation_time);
63 
64 gboolean meta_window_actor_effect_in_progress  (MetaWindowActor *self);
65 
66 MetaWindowActorChanges meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
67                                                               gboolean         did_placement);
68 
69 void     meta_window_actor_update_opacity      (MetaWindowActor *self);
70 void     meta_window_actor_mapped              (MetaWindowActor *self);
71 void     meta_window_actor_unmapped            (MetaWindowActor *self);
72 void     meta_window_actor_sync_updates_frozen (MetaWindowActor *self);
73 
74 META_EXPORT_TEST
75 void     meta_window_actor_queue_frame_drawn   (MetaWindowActor *self,
76                                                 gboolean         no_delay_frame);
77 
78 void meta_window_actor_effect_completed (MetaWindowActor  *actor,
79                                          MetaPluginEffect  event);
80 
81 MetaSurfaceActor *meta_window_actor_get_surface (MetaWindowActor *self);
82 
83 void meta_window_actor_assign_surface_actor (MetaWindowActor  *self,
84                                              MetaSurfaceActor *surface_actor);
85 
86 META_EXPORT_TEST
87 MetaWindowActor *meta_window_actor_from_window (MetaWindow *window);
88 MetaWindowActor *meta_window_actor_from_actor (ClutterActor *actor);
89 
90 void meta_window_actor_set_geometry_scale (MetaWindowActor *window_actor,
91                                            int              geometry_scale);
92 
93 int meta_window_actor_get_geometry_scale (MetaWindowActor *window_actor);
94 
95 void meta_window_actor_notify_damaged (MetaWindowActor *window_actor);
96 
97 gboolean meta_window_actor_is_frozen (MetaWindowActor *self);
98 
99 gboolean meta_window_actor_is_opaque (MetaWindowActor *self);
100 
101 void meta_window_actor_update_regions (MetaWindowActor *self);
102 
103 gboolean meta_window_actor_can_freeze_commits (MetaWindowActor *self);
104 
105 #endif /* META_WINDOW_ACTOR_PRIVATE_H */
106