mirror of
https://github.com/brl/mutter.git
synced 2025-07-04 01:54:15 +00:00
Use cairo_region_t when building with gtk+-3.0
GdkRegion has been removed from Gtk+. The replacement is a yet-unreleased cairo API, so use it only when building with Gtk+-3.0. https://bugzilla.gnome.org/show_bug.cgi?id=587991
This commit is contained in:
@ -27,6 +27,7 @@
|
||||
#include <math.h>
|
||||
#include "boxes.h"
|
||||
#include "frames.h"
|
||||
#include "region.h"
|
||||
#include "util.h"
|
||||
#include "core.h"
|
||||
#include "menu.h"
|
||||
@ -75,7 +76,7 @@ static void meta_frames_attach_style (MetaFrames *frames,
|
||||
static void meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
GdkDrawable *drawable,
|
||||
GdkRegion *region,
|
||||
MetaRegion *region,
|
||||
int x_offset,
|
||||
int y_offset);
|
||||
|
||||
@ -2068,7 +2069,7 @@ generate_pixmap (MetaFrames *frames,
|
||||
MetaRectangle rect)
|
||||
{
|
||||
GdkRectangle rectangle;
|
||||
GdkRegion *region;
|
||||
MetaRegion *region;
|
||||
GdkPixmap *result;
|
||||
|
||||
rectangle.x = rect.x;
|
||||
@ -2081,12 +2082,12 @@ generate_pixmap (MetaFrames *frames,
|
||||
|
||||
clear_backing (result, frame->window, rectangle.x, rectangle.y);
|
||||
|
||||
region = gdk_region_rectangle (&rectangle);
|
||||
region = meta_region_new_from_rectangle (&rectangle);
|
||||
|
||||
meta_frames_paint_to_drawable (frames, frame, result, region,
|
||||
-rectangle.x, -rectangle.y);
|
||||
|
||||
gdk_region_destroy (region);
|
||||
meta_region_destroy (region);
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -2170,11 +2171,11 @@ populate_cache (MetaFrames *frames,
|
||||
}
|
||||
|
||||
static void
|
||||
clip_to_screen (GdkRegion *region, MetaUIFrame *frame)
|
||||
clip_to_screen (MetaRegion *region, MetaUIFrame *frame)
|
||||
{
|
||||
GdkRectangle frame_area;
|
||||
GdkRectangle screen_area = { 0, 0, 0, 0 };
|
||||
GdkRegion *tmp_region;
|
||||
MetaRegion *tmp_region;
|
||||
|
||||
/* Chop off stuff outside the screen; this optimization
|
||||
* is crucial to handle huge client windows,
|
||||
@ -2189,35 +2190,35 @@ clip_to_screen (GdkRegion *region, MetaUIFrame *frame)
|
||||
META_CORE_GET_SCREEN_HEIGHT, &screen_area.height,
|
||||
META_CORE_GET_END);
|
||||
|
||||
gdk_region_offset (region, frame_area.x, frame_area.y);
|
||||
meta_region_translate (region, frame_area.x, frame_area.y);
|
||||
|
||||
tmp_region = gdk_region_rectangle (&frame_area);
|
||||
gdk_region_intersect (region, tmp_region);
|
||||
gdk_region_destroy (tmp_region);
|
||||
tmp_region = meta_region_new_from_rectangle (&frame_area);
|
||||
meta_region_intersect (region, tmp_region);
|
||||
meta_region_destroy (tmp_region);
|
||||
|
||||
gdk_region_offset (region, - frame_area.x, - frame_area.y);
|
||||
meta_region_translate (region, - frame_area.x, - frame_area.y);
|
||||
}
|
||||
|
||||
static void
|
||||
subtract_from_region (GdkRegion *region, GdkDrawable *drawable,
|
||||
subtract_from_region (MetaRegion *region, GdkDrawable *drawable,
|
||||
gint x, gint y)
|
||||
{
|
||||
GdkRectangle rect;
|
||||
GdkRegion *reg_rect;
|
||||
MetaRegion *reg_rect;
|
||||
|
||||
gdk_drawable_get_size (drawable, &rect.width, &rect.height);
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
|
||||
reg_rect = gdk_region_rectangle (&rect);
|
||||
gdk_region_subtract (region, reg_rect);
|
||||
gdk_region_destroy (reg_rect);
|
||||
reg_rect = meta_region_new_from_rectangle (&rect);
|
||||
meta_region_subtract (region, reg_rect);
|
||||
meta_region_destroy (reg_rect);
|
||||
}
|
||||
|
||||
static void
|
||||
cached_pixels_draw (CachedPixels *pixels,
|
||||
GdkWindow *window,
|
||||
GdkRegion *region)
|
||||
GdkWindow *window,
|
||||
MetaRegion *region)
|
||||
{
|
||||
GdkGC *gc;
|
||||
int i;
|
||||
@ -2249,8 +2250,8 @@ meta_frames_expose_event (GtkWidget *widget,
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
MetaFrames *frames;
|
||||
GdkRegion *region;
|
||||
CachedPixels *pixels;
|
||||
MetaRegion *region;
|
||||
|
||||
frames = META_FRAMES (widget);
|
||||
|
||||
@ -2267,7 +2268,7 @@ meta_frames_expose_event (GtkWidget *widget,
|
||||
|
||||
populate_cache (frames, frame);
|
||||
|
||||
region = gdk_region_copy (event->region);
|
||||
region = meta_region_copy (event->region);
|
||||
|
||||
pixels = get_cache (frames, frame);
|
||||
|
||||
@ -2276,7 +2277,7 @@ meta_frames_expose_event (GtkWidget *widget,
|
||||
clip_to_screen (region, frame);
|
||||
meta_frames_paint_to_drawable (frames, frame, frame->window, region, 0, 0);
|
||||
|
||||
gdk_region_destroy (region);
|
||||
meta_region_destroy (region);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -2290,7 +2291,7 @@ static void
|
||||
meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
GdkDrawable *drawable,
|
||||
GdkRegion *region,
|
||||
MetaRegion *region,
|
||||
int x_offset,
|
||||
int y_offset)
|
||||
{
|
||||
@ -2423,7 +2424,7 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
GdkRectangle area, *areas;
|
||||
int n_areas;
|
||||
int screen_width, screen_height;
|
||||
GdkRegion *edges, *tmp_region;
|
||||
MetaRegion *edges, *tmp_region;
|
||||
int top, bottom, left, right;
|
||||
|
||||
/* Repaint each side of the frame */
|
||||
@ -2437,7 +2438,7 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
META_CORE_GET_SCREEN_HEIGHT, &screen_height,
|
||||
META_CORE_GET_END);
|
||||
|
||||
edges = gdk_region_copy (region);
|
||||
edges = meta_region_copy (region);
|
||||
|
||||
/* Punch out the client area */
|
||||
|
||||
@ -2445,13 +2446,13 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
area.y = top;
|
||||
area.width = w;
|
||||
area.height = h;
|
||||
tmp_region = gdk_region_rectangle (&area);
|
||||
gdk_region_subtract (edges, tmp_region);
|
||||
gdk_region_destroy (tmp_region);
|
||||
tmp_region = meta_region_new_from_rectangle (&area);
|
||||
meta_region_subtract (edges, tmp_region);
|
||||
meta_region_destroy (tmp_region);
|
||||
|
||||
/* Now draw remaining portion of region */
|
||||
|
||||
gdk_region_get_rectangles (edges, &areas, &n_areas);
|
||||
meta_region_get_rectangles (edges, &areas, &n_areas);
|
||||
|
||||
for (i = 0; i < n_areas; i++)
|
||||
{
|
||||
@ -2494,7 +2495,7 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
}
|
||||
|
||||
g_free (areas);
|
||||
gdk_region_destroy (edges);
|
||||
meta_region_destroy (edges);
|
||||
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user