compositor.c

Go to the documentation of this file.
00001 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
00002 
00003 /*
00004  * Copyright (C) 2008 Iain Holmes
00005  *
00006  * This program is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU General Public License as
00008  * published by the Free Software Foundation; either version 2 of the
00009  * License, or (at your option) any later version.
00010  *
00011  * This program is distributed in the hope that it will be useful, but
00012  * WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this program; if not, write to the Free Software
00018  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
00019  * 02111-1307, USA.
00020  */
00021 
00022 #include <config.h>
00023 #include "compositor-private.h"
00024 #include "compositor-xrender.h"
00025 
00026 MetaCompositor *
00027 meta_compositor_new (MetaDisplay *display)
00028 {
00029 #ifdef HAVE_COMPOSITE_EXTENSIONS
00030   /* At some point we would have a way to select between backends */
00031   return meta_compositor_xrender_new (display);
00032 #else
00033   return NULL;
00034 #endif
00035 }
00036 
00037 void
00038 meta_compositor_destroy (MetaCompositor *compositor)
00039 {
00040 #ifdef HAVE_COMPOSITE_EXTENSIONS
00041   if (compositor && compositor->destroy)
00042     compositor->destroy (compositor);
00043 #endif
00044 }
00045 
00046 void
00047 meta_compositor_add_window (MetaCompositor    *compositor,
00048                             MetaWindow        *window,
00049                             Window             xwindow,
00050                             XWindowAttributes *attrs)
00051 {
00052 #ifdef HAVE_COMPOSITE_EXTENSIONS
00053   if (compositor && compositor->add_window)
00054     compositor->add_window (compositor, window, xwindow, attrs);
00055 #endif
00056 }
00057 
00058 void
00059 meta_compositor_remove_window (MetaCompositor *compositor,
00060                                Window          xwindow)
00061 {
00062 #ifdef HAVE_COMPOSITE_EXTENSIONS
00063   if (compositor && compositor->remove_window)
00064     compositor->remove_window (compositor, xwindow);
00065 #endif
00066 }
00067 
00068 void
00069 meta_compositor_manage_screen (MetaCompositor *compositor,
00070                                MetaScreen     *screen)
00071 {
00072 #ifdef HAVE_COMPOSITE_EXTENSIONS
00073   if (compositor && compositor->manage_screen)
00074     compositor->manage_screen (compositor, screen);
00075 #endif
00076 }
00077 
00078 void
00079 meta_compositor_unmanage_screen (MetaCompositor *compositor,
00080                                  MetaScreen     *screen)
00081 {
00082 #ifdef HAVE_COMPOSITE_EXTENSIONS
00083   if (compositor && compositor->unmanage_screen)
00084     compositor->unmanage_screen (compositor, screen);
00085 #endif
00086 }
00087 
00088 void
00089 meta_compositor_set_updates (MetaCompositor *compositor,
00090                              MetaWindow     *window,
00091                              gboolean        updates)
00092 {
00093 #ifdef HAVE_COMPOSITE_EXTENSIONS
00094   if (compositor && compositor->set_updates)
00095     compositor->set_updates (compositor, window, updates);
00096 #endif
00097 }
00098 
00099 void
00100 meta_compositor_process_event (MetaCompositor *compositor,
00101                                XEvent         *event,
00102                                MetaWindow     *window)
00103 {
00104 #ifdef HAVE_COMPOSITE_EXTENSIONS
00105   if (compositor && compositor->process_event)
00106     compositor->process_event (compositor, event, window);
00107 #endif
00108 }
00109 
00110 Pixmap
00111 meta_compositor_get_window_pixmap (MetaCompositor *compositor,
00112                                    MetaWindow     *window)
00113 {
00114 #ifdef HAVE_COMPOSITE_EXTENSIONS
00115   if (compositor && compositor->get_window_pixmap)
00116     return compositor->get_window_pixmap (compositor, window);
00117   else 
00118     return None;
00119 #else
00120   return None;
00121 #endif
00122 }
00123 
00124 void
00125 meta_compositor_set_active_window (MetaCompositor *compositor,
00126                                    MetaScreen     *screen,
00127                                    MetaWindow     *window)
00128 {
00129 #ifdef HAVE_COMPOSITE_EXTENSIONS
00130   if (compositor && compositor->set_active_window) 
00131     compositor->set_active_window (compositor, screen, window);
00132 #endif
00133 }
00134 
00135 /* These functions are unused at the moment */
00136 void meta_compositor_begin_move (MetaCompositor *compositor,
00137                                  MetaWindow     *window,
00138                                  MetaRectangle  *initial,
00139                                  int             grab_x, 
00140                                  int             grab_y)
00141 {
00142 }
00143 
00144 void meta_compositor_update_move (MetaCompositor *compositor,
00145                                   MetaWindow     *window,
00146                                   int             x, 
00147                                   int             y)
00148 {
00149 }
00150 
00151 void meta_compositor_end_move (MetaCompositor *compositor,
00152                                MetaWindow     *window)
00153 {
00154 }
00155 
00156 void meta_compositor_free_window (MetaCompositor *compositor,
00157                                   MetaWindow     *window)
00158 {
00159 }

Generated on Sat Aug 23 22:04:16 2008 for metacity by  doxygen 1.5.5