4 * Copyright 2001 Sun Microsystems Inc.
6 * Erwann Chenede <erwann.chenede@sun.com>
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
26 #include "gdkscreen-broadway.h"
28 #include "gdkscreen.h"
29 #include "gdkdisplay.h"
30 #include "gdkdisplay-broadway.h"
37 static void gdk_screen_broadway_dispose (GObject *object);
38 static void gdk_screen_broadway_finalize (GObject *object);
40 G_DEFINE_TYPE (GdkScreenBroadway, _gdk_screen_broadway, GDK_TYPE_SCREEN)
43 _gdk_screen_broadway_class_init (GdkScreenBroadwayClass *klass)
45 GObjectClass *object_class = G_OBJECT_CLASS (klass);
47 object_class->dispose = gdk_screen_broadway_dispose;
48 object_class->finalize = gdk_screen_broadway_finalize;
52 _gdk_screen_broadway_init (GdkScreenBroadway *screen)
59 gdk_screen_get_display (GdkScreen *screen)
61 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
63 return GDK_SCREEN_BROADWAY (screen)->display;
67 gdk_screen_get_width (GdkScreen *screen)
69 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
71 return GDK_SCREEN_BROADWAY (screen)->width;
75 gdk_screen_get_height (GdkScreen *screen)
77 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
79 return GDK_SCREEN_BROADWAY (screen)->height;
83 gdk_screen_get_width_mm (GdkScreen *screen)
85 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
87 return gdk_screen_get_width (screen) * 25.4 / 96;
91 gdk_screen_get_height_mm (GdkScreen *screen)
93 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
95 return gdk_screen_get_height (screen) * 25.4 / 96;
99 gdk_screen_get_number (GdkScreen *screen)
101 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
107 gdk_screen_get_root_window (GdkScreen *screen)
109 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
111 return GDK_SCREEN_BROADWAY (screen)->root_window;
115 gdk_screen_broadway_dispose (GObject *object)
117 GdkScreenBroadway *screen_broadway = GDK_SCREEN_BROADWAY (object);
119 if (screen_broadway->root_window)
120 _gdk_window_destroy (screen_broadway->root_window, TRUE);
122 G_OBJECT_CLASS (_gdk_screen_broadway_parent_class)->dispose (object);
126 gdk_screen_broadway_finalize (GObject *object)
128 GdkScreenBroadway *screen_broadway = GDK_SCREEN_BROADWAY (object);
131 if (screen_broadway->root_window)
132 g_object_unref (screen_broadway->root_window);
135 for (i = 0; i < screen_broadway->nvisuals; i++)
136 g_object_unref (screen_broadway->visuals[i]);
137 g_free (screen_broadway->visuals);
139 G_OBJECT_CLASS (_gdk_screen_broadway_parent_class)->finalize (object);
143 gdk_screen_get_n_monitors (GdkScreen *screen)
145 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
151 gdk_screen_get_primary_monitor (GdkScreen *screen)
153 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
159 gdk_screen_get_monitor_width_mm (GdkScreen *screen,
162 g_return_val_if_fail (GDK_IS_SCREEN (screen), -1);
163 g_return_val_if_fail (monitor_num == 0, -1);
165 return gdk_screen_get_width_mm (screen);
169 gdk_screen_get_monitor_height_mm (GdkScreen *screen,
172 g_return_val_if_fail (GDK_IS_SCREEN (screen), -1);
173 g_return_val_if_fail (monitor_num == 0, -1);
175 return gdk_screen_get_height_mm (screen);
179 gdk_screen_get_monitor_plug_name (GdkScreen *screen,
182 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
183 g_return_val_if_fail (monitor_num == 0, NULL);
185 return g_strdup ("browser");
189 * gdk_screen_get_monitor_geometry:
190 * @screen: a #GdkScreen
191 * @monitor_num: the monitor number, between 0 and gdk_screen_get_n_monitors (screen)
192 * @dest: a #GdkRectangle to be filled with the monitor geometry
194 * Retrieves the #GdkRectangle representing the size and position of
195 * the individual monitor within the entire screen area.
197 * Note that the size of the entire screen area can be retrieved via
198 * gdk_screen_get_width() and gdk_screen_get_height().
203 gdk_screen_get_monitor_geometry (GdkScreen *screen,
207 GdkScreenBroadway *screen_broadway = GDK_SCREEN_BROADWAY (screen);
209 g_return_if_fail (GDK_IS_SCREEN (screen));
210 g_return_if_fail (monitor_num == 0);
216 dest->width = screen_broadway->width;
217 dest->height = screen_broadway->height;
222 gdk_screen_get_rgba_visual (GdkScreen *screen)
224 GdkScreenBroadway *screen_broadway;
226 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
228 screen_broadway = GDK_SCREEN_BROADWAY (screen);
230 return screen_broadway->rgba_visual;
234 _gdk_broadway_screen_new (GdkDisplay *display,
238 GdkScreenBroadway *screen_broadway;
240 screen = g_object_new (GDK_TYPE_SCREEN_BROADWAY, NULL);
242 screen_broadway = GDK_SCREEN_BROADWAY (screen);
243 screen_broadway->display = display;
244 _gdk_visual_init (screen);
245 _gdk_windowing_window_init (screen);
251 * It is important that we first request the selection
252 * notification, and then setup the initial state of
253 * is_composited to avoid a race condition here.
256 _gdk_broadway_screen_setup (GdkScreen *screen)
261 gdk_screen_is_composited (GdkScreen *screen)
263 GdkScreenBroadway *screen_broadway;
265 g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
267 screen_broadway = GDK_SCREEN_BROADWAY (screen);
274 gdk_screen_make_display_name (GdkScreen *screen)
276 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
278 return g_strdup ("browser");
282 gdk_screen_get_active_window (GdkScreen *screen)
288 gdk_screen_get_window_stack (GdkScreen *screen)
294 gdk_screen_broadcast_client_message (GdkScreen *screen,
300 gdk_screen_get_setting (GdkScreen *screen,
308 gdk_net_wm_supports (GdkAtom property)
314 _gdk_screen_broadway_events_init (GdkScreen *screen)
319 _gdk_windowing_substitute_screen_number (const gchar *display_name,
322 return g_strdup ("browser");