/* * Copyright (C) 2008 Iain Holmes * Copyright (C) 2017 Alberts Muktupāvels * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef META_COMPOSITOR_H #define META_COMPOSITOR_H #include #include #include "types.h" #include "boxes.h" G_BEGIN_DECLS #define META_TYPE_COMPOSITOR meta_compositor_get_type () G_DECLARE_DERIVABLE_TYPE (MetaCompositor, meta_compositor, META, COMPOSITOR, GObject) typedef enum { META_COMPOSITOR_TYPE_NONE, META_COMPOSITOR_TYPE_XRENDER, META_COMPOSITOR_TYPE_XPRESENT, META_COMPOSITOR_TYPE_EXTERNAL, /*< skip >*/ META_COMPOSITOR_TYPE_VULKAN /*< skip >*/ } MetaCompositorType; typedef enum /*< skip >*/ { META_EFFECT_TYPE_NONE, META_EFFECT_TYPE_CREATE, META_EFFECT_TYPE_DESTROY, META_EFFECT_TYPE_MINIMIZE, META_EFFECT_TYPE_UNMINIMIZE, } MetaEffectType; void meta_compositor_add_window (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_remove_window (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_show_window (MetaCompositor *compositor, MetaWindow *window, MetaEffectType effect); void meta_compositor_hide_window (MetaCompositor *compositor, MetaWindow *window, MetaEffectType effect); void meta_compositor_window_opacity_changed (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_window_opaque_region_changed (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_window_shape_region_changed (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_set_updates_frozen (MetaCompositor *compositor, MetaWindow *window, gboolean updates_frozen); void meta_compositor_process_event (MetaCompositor *compositor, XEvent *event, MetaWindow *window); cairo_surface_t *meta_compositor_get_window_surface (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_maximize_window (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_unmaximize_window (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_sync_screen_size (MetaCompositor *compositor); void meta_compositor_sync_stack (MetaCompositor *compositor, GList *stack); void meta_compositor_sync_window_geometry (MetaCompositor *compositor, MetaWindow *window); gboolean meta_compositor_is_our_xwindow (MetaCompositor *compositor, Window xwindow); gboolean meta_compositor_is_composited (MetaCompositor *compositor); G_END_DECLS #endif