~ubuntu-desktop/compiz-plugins-main/precise

« back to all changes in this revision

Viewing changes to .pc/fix_broken_build.patch/wall/src/wall.h

  • Committer: Package Import Robot
  • Author(s): Didier Roche, Łukasz 'sil2100' Zemczak, Didier Roche
  • Date: 2012-03-21 11:46:41 UTC
  • Revision ID: package-import@ubuntu.com-20120321114641-5ehdlu4zkt71vziw
Tags: 1:0.9.7.0~bzr19-0ubuntu7
[ Łukasz 'sil2100' Zemczak ]
* debian/patches/shift_954079.patch:
  - cherry picked the shift plugin patch for fixing an issue with compiz crashes
    on right-click. This removes an unused option in the plugin. (LP: #954079)
* debian/patches/fix_broken_build.patch:
  - fixes the build with the newer compiz
* debian/patches/vpswitch_953834.patch:
  - don't pass through keystrokes you are using to the active window (LP: #953834)

[ Didier Roche ]
* debian/control:
  - bump compiz-dev and libcompizconfig0-dev build-dep for ABI break
* debian/patches/fix_930192.patch:
  - Animations of large or full-screen windows skip frames (not smooth) (LP: #930192)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 *
 
3
 * Compiz wall plugin
 
4
 *
 
5
 * wall.h
 
6
 *
 
7
 * Copyright (c) 2006 Robert Carr <racarr@beryl-project.org>
 
8
 *
 
9
 * Authors:
 
10
 * Robert Carr <racarr@beryl-project.org>
 
11
 * Dennis Kasprzyk <onestone@opencompositing.org>
 
12
 *
 
13
 * This program is free software; you can redistribute it and/or
 
14
 * modify it under the terms of the GNU General Public License
 
15
 * as published by the Free Software Foundation; either version 2
 
16
 * of the License, or (at your option) any later version.
 
17
 *
 
18
 * This program is distributed in the hope that it will be useful,
 
19
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
20
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
21
 * GNU General Public License for more details.
 
22
 *
 
23
 **/
 
24
 
 
25
#include <core/core.h>
 
26
#include <core/pluginclasshandler.h>
 
27
#include <composite/composite.h>
 
28
#include <opengl/opengl.h>
 
29
#include <mousepoll/mousepoll.h>
 
30
 
 
31
#include <cairo-xlib-xrender.h>
 
32
#include <cairo.h>
 
33
 
 
34
#include "wall_options.h"
 
35
 
 
36
 
 
37
/* enums */
 
38
typedef enum
 
39
{
 
40
    NoTransformation,
 
41
    MiniScreen,
 
42
    Sliding
 
43
} ScreenTransformation;
 
44
 
 
45
/* FIXME: put into own class? */
 
46
typedef struct _WallCairoContext
 
47
{
 
48
    Pixmap          pixmap;
 
49
    GLTexture::List texture;
 
50
 
 
51
    cairo_surface_t *surface;
 
52
    cairo_t         *cr;
 
53
 
 
54
    int width;
 
55
    int height;
 
56
} WallCairoContext;
 
57
 
 
58
/* classes */
 
59
class WallScreen :
 
60
    public ScreenInterface,
 
61
    public CompositeScreenInterface,
 
62
    public GLScreenInterface,
 
63
    public PluginClassHandler <WallScreen, CompScreen>,
 
64
    public WallOptions
 
65
{
 
66
    public:
 
67
        enum Direction
 
68
        {
 
69
            Up = 0,
 
70
            Left,
 
71
            Down,
 
72
            Right,
 
73
            Next,
 
74
            Prev
 
75
        };
 
76
 
 
77
        WallScreen (CompScreen *s);
 
78
        ~WallScreen ();
 
79
 
 
80
        void preparePaint (int);
 
81
        void paint (CompOutput::ptrList &, unsigned int);
 
82
        void donePaint ();
 
83
        void handleEvent (XEvent *event);
 
84
 
 
85
        bool glPaintOutput (const GLScreenPaintAttrib &,
 
86
                            const GLMatrix &, const CompRegion &,
 
87
                            CompOutput *, unsigned int);
 
88
        void glPaintTransformedOutput (const GLScreenPaintAttrib &,
 
89
                                       const GLMatrix &,
 
90
                                       const CompRegion &,
 
91
                                       CompOutput *, unsigned int);
 
92
 
 
93
        bool setOptionForPlugin (const char *, const char *,
 
94
                                 CompOption::Value&);
 
95
        void matchExpHandlerChanged ();
 
96
        void matchPropertyChanged (CompWindow *);
 
97
 
 
98
        void createCairoContexts (bool);
 
99
        void setupCairoContext (WallCairoContext &);
 
100
        void destroyCairoContext (WallCairoContext &);
 
101
        void clearCairoLayer (cairo_t *);
 
102
        void drawSwitcherBackground ();
 
103
        void drawThumb ();
 
104
        void drawHighlight ();
 
105
        void drawArrow ();
 
106
        void drawCairoTextureOnScreen();
 
107
 
 
108
        void releaseMoveWindow ();
 
109
        void computeTranslation (float &, float &);
 
110
        void determineMovementAngle ();
 
111
        bool checkDestination (unsigned int, unsigned int);
 
112
        void checkAmount (int, int, int &, int &);
 
113
 
 
114
        bool initiate (CompAction *, CompAction::State, CompOption::Vector &,
 
115
                       Direction, bool);
 
116
        bool terminate (CompAction *, CompAction::State, CompOption::Vector &);
 
117
        bool initiateFlip (Direction, CompAction::State);
 
118
 
 
119
        bool moveViewport (int, int, Window);
 
120
 
 
121
        void optionChanged (CompOption *opt, WallOptions::Options num);
 
122
        void toggleEdges (bool);
 
123
 
 
124
        void positionUpdate (const CompPoint &pos);
 
125
        void updateScreenEdgeRegions ();
 
126
 
 
127
        CompositeScreen *cScreen;
 
128
        GLScreen        *glScreen;
 
129
 
 
130
        bool moving; /* Used to track miniview movement */
 
131
        bool showPreview;
 
132
 
 
133
        float        curPosX;
 
134
        float        curPosY;
 
135
        unsigned int gotoX;
 
136
        unsigned int gotoY;
 
137
 
 
138
        int direction; /* >= 0 : direction arrow angle, < 0 : no direction */
 
139
 
 
140
        int          boxTimeout;
 
141
        unsigned int boxOutputDevice;
 
142
        void         *grabIndex;
 
143
        int          timer;
 
144
 
 
145
        Window moveWindow;
 
146
 
 
147
        bool focusDefault;
 
148
 
 
149
        ScreenTransformation transform;
 
150
        CompOutput          *currOutput;
 
151
 
 
152
        GLWindowPaintAttrib mSAttribs;
 
153
        float               mSzCamera;
 
154
 
 
155
        int firstViewportX;
 
156
        int firstViewportY;
 
157
        int viewportWidth;
 
158
        int viewportHeight;
 
159
        int viewportBorder;
 
160
 
 
161
        int moveWindowX;
 
162
        int moveWindowY;
 
163
 
 
164
        WallCairoContext switcherContext;
 
165
        WallCairoContext thumbContext;
 
166
        WallCairoContext highlightContext;
 
167
        WallCairoContext arrowContext;
 
168
 
 
169
        MousePoller      poller;
 
170
        bool             edgeDrag;
 
171
        CompRegion       edgeRegion;
 
172
        CompRegion       noEdgeRegion;
 
173
};
 
174
 
 
175
class WallWindow :
 
176
        public WindowInterface,
 
177
        public GLWindowInterface,
 
178
        public PluginClassHandler <WallWindow, CompWindow>
 
179
{
 
180
    public:
 
181
        WallWindow (CompWindow *);
 
182
 
 
183
        virtual void activate ();
 
184
        void grabNotify (int, int, unsigned int, unsigned int);
 
185
        void ungrabNotify ();
 
186
        bool glPaint (const GLWindowPaintAttrib &, const GLMatrix &,
 
187
                      const CompRegion &, unsigned int);
 
188
 
 
189
        CompWindow *window;
 
190
        GLWindow   *glWindow;
 
191
 
 
192
        bool isSliding;
 
193
};
 
194
 
 
195
#define WALL_SCREEN(s) \
 
196
    WallScreen *ws = WallScreen::get (s)
 
197
 
 
198
#define WALL_WINDOW(w) \
 
199
    WallWindow *ww = WallWindow::get (w)
 
200
 
 
201
class WallPluginVTable :
 
202
    public CompPlugin::VTableForScreenAndWindow <WallScreen, WallWindow>
 
203
{
 
204
    public:
 
205
 
 
206
        bool init ();
 
207
};
 
208