summaryrefslogtreecommitdiff
path: root/src/privatewindow.h
diff options
context:
space:
mode:
authorSam Spilsbury <smspillaz@gmail.com>2011-01-13 07:59:23 +0800
committerSam Spilsbury <smspillaz@gmail.com>2011-01-13 07:59:23 +0800
commit9bd6d03c3d74a2e4d31874c1118df300b43142ba (patch)
treeb984bdf5563280d2499f8effc80adbb62ad52dce /src/privatewindow.h
parentecc61dc04567947e92cbb9686c1041619abc05b1 (diff)
downloadmobileperf-9bd6d03c3d74a2e4d31874c1118df300b43142ba.tar.gz
mobileperf-9bd6d03c3d74a2e4d31874c1118df300b43142ba.tar.bz2
Don't create CompWindow and initialize plugins until MapRequest.
Having all plugins track windows on CreateNotify doesn't make any sense because they are not visible, and the ones that they would need to track would be override-redirect anyways. Also tracking windows in this way broke reparenting in such a way that a number of buggy applications using xembed (eg gnome-panel applets and Adobe Flash would consistently crash).
Diffstat (limited to 'src/privatewindow.h')
-rw-r--r--src/privatewindow.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/privatewindow.h b/src/privatewindow.h
index 99d0c4e..eb86932 100644
--- a/src/privatewindow.h
+++ b/src/privatewindow.h
@@ -46,7 +46,7 @@ typedef CompWindowExtents CompFullscreenMonitorSet;
class PrivateWindow {
public:
- PrivateWindow (CompWindow *window);
+ PrivateWindow (CoreWindow *window);
~PrivateWindow ();
void recalcNormalHints ();
@@ -302,4 +302,24 @@ class PrivateWindow {
Time lastCloseRequestTime;
};
+/* Minimal tracking of the window which happens
+ * on CreateNotify */
+
+class CoreWindow
+{
+ public:
+
+ CoreWindow (Window id);
+
+ CompWindow * manage (Window id);
+
+ friend class PrivateWindow;
+ friend class PrivateScreen;
+ friend class CompScreen;
+
+ private:
+
+ PrivateWindow *priv;
+};
+
#endif