frames: Remove frame border pixel caching and related optimizations

Since we now cache windows in the X server, we don't really need to cache
them here. Since we are redirecting windows in most cases, we're not gaining
anything except added memory usage. Additionally, remove the clip to screen
optimization - if a window is partially off-screen, we still need to draw
the entire thing as redirection means we won't get an expose event for it.

Additionally, when introducing invisible borders, something accidentally
slipped through: we were getting expose events on the invisible borders,
and they weren't in the cached pixels rect, so we were painting the theme
for them, even if we didn't actually paint anything with cairo. Make sure
to clip out the invisible borders instead of just the client rect so that
we don't draw if our expose event is on the invisible borders.

https://bugzilla.gnome.org/show_bug.cgi?id=675111
This commit is contained in:
Jasper St. Pierre
2012-05-21 12:48:31 -04:00
parent fc87a635b2
commit 6fb857cb23
2 changed files with 35 additions and 319 deletions

View File

@ -97,10 +97,6 @@ struct _MetaFrames
GtkStyleContext *normal_style;
GHashTable *style_variants;
int invalidate_cache_timeout_id;
GList *invalidate_frames;
GHashTable *cache;
};
struct _MetaFramesClass