238
238
PrivateCubeScreen::updateGeometry (int sides,
241
/* This will never happen, but we want to calm down the static code analyzer
243
* See: https://bugs.launchpad.net/compiz/+bug/1101541 for details
250
GLfloat mps = M_PI / sides;
251
GLfloat tmps = 2 * mps;
252
GLfloat distance = 0.5f / tanf (mps);
253
GLfloat radius = 0.5f / sinf (mps);
254
GLfloat normInvert = 0.5f * invert;
255
int i, n = (sides + 2) * 2;
246
GLfloat distance = 0.5f / tanf (M_PI / sides);
247
GLfloat radius = 0.5f / sinf (M_PI / sides);
249
int n = (sides + 2) * 2;
251
258
if (mNVertices != n)
253
260
v = (GLfloat *) realloc (mVertices, sizeof (GLfloat) * n * 3);
267
275
for (i = 0; i <= sides; ++i)
269
*v++ = radius * sinf (i * 2 * M_PI / sides + M_PI / sides);
271
*v++ = radius * cosf (i * 2 * M_PI / sides + M_PI / sides);
277
*v++ = radius * sinf (i * tmps + mps);
279
*v++ = radius * cosf (i * tmps + mps);
278
286
for (i = sides; i >= 0; --i)
280
*v++ = radius * sinf (i * 2 * M_PI / sides + M_PI / sides);
281
*v++ = -0.5 * invert;
282
*v++ = radius * cosf (i * 2 * M_PI / sides + M_PI / sides);
288
*v++ = radius * sinf (i * tmps + mps);
290
*v++ = radius * cosf (i * tmps + mps);
285
293
mInvert = invert;
386
if (screen->outputDevs ()[0].width () != screen->width () ||
387
screen->outputDevs ()[0].height () != screen->height ())
388
mFullscreenOutput = true;
393
(screen->outputDevs ()[0].width () != screen->width () ||
394
screen->outputDevs ()[0].height () != screen->height ()))
395
mFullscreenOutput = true;
407
413
(std::numeric_limits <unsigned short>::max ());
408
414
GLfloat aaafTextureData[128][128][3];
410
GLfloat fRStart = optionGetSkydomeGradientStartColorRed () / MaxUShortFloat;
416
GLfloat fRStart = optionGetSkydomeGradientStartColorRed () / MaxUShortFloat;
411
417
GLfloat fGStart = optionGetSkydomeGradientStartColorGreen () / MaxUShortFloat;
412
GLfloat fBStart = optionGetSkydomeGradientStartColorBlue () / MaxUShortFloat;
418
GLfloat fBStart = optionGetSkydomeGradientStartColorBlue () / MaxUShortFloat;
414
GLfloat fREnd = optionGetSkydomeGradientEndColorRed () / MaxUShortFloat;
420
GLfloat fREnd = optionGetSkydomeGradientEndColorRed () / MaxUShortFloat;
415
421
GLfloat fGEnd = optionGetSkydomeGradientEndColorGreen () / MaxUShortFloat;
416
GLfloat fBEnd = optionGetSkydomeGradientEndColorBlue () / MaxUShortFloat;
422
GLfloat fBEnd = optionGetSkydomeGradientEndColorBlue () / MaxUShortFloat;
418
424
GLfloat fRStep = (fREnd - fRStart) / 128.0f;
419
425
GLfloat fGStep = (fGEnd - fGStart) / 128.0f;
522
528
GLfloat fStepX = 1.0 / (GLfloat) (iSlicesEnd - iSlicesStart);
523
529
GLfloat fStepY = 1.0 / (GLfloat) (iStacksEnd - iStacksStart);
531
GLfloat oneMinusFStepX = 1.0f - fStepX;
532
GLfloat oneMinusFStepY = 1.0f - fStepY;
528
if (!fillCircleTable (&sint1, &cost1, -iSlices))
535
!fillCircleTable (&sint1, &cost1, -iSlices))
531
538
if (!fillCircleTable (&sint2, &cost2, iStacks * 2))
538
545
afTexCoordX[0] = 1.0f;
539
afTexCoordY[0] = 1.0f - fStepY;
540
afTexCoordX[1] = 1.0f - fStepX;
541
afTexCoordY[1] = 1.0f - fStepY;
542
afTexCoordX[2] = 1.0f - fStepX;
546
afTexCoordY[0] = oneMinusFStepY;
547
afTexCoordX[1] = oneMinusFStepX;
548
afTexCoordY[1] = oneMinusFStepY;
549
afTexCoordX[2] = oneMinusFStepX;
543
550
afTexCoordY[2] = 1.0f;
544
551
afTexCoordX[3] = 1.0f;
545
552
afTexCoordY[3] = 1.0f;
552
559
mSky[0]->enable (GLTexture::Good);
561
GLfloat mSkyWidth = mSkySize.width ();
562
GLfloat mSkyHeight = mSkySize.height ();
554
564
glBegin (GL_QUADS);
556
566
for (int i = iStacksStart; i < iStacksEnd; ++i)
558
568
afTexCoordX[0] = 1.0f;
559
afTexCoordX[1] = 1.0f - fStepX;
560
afTexCoordX[2] = 1.0f - fStepX;
569
afTexCoordX[1] = oneMinusFStepX;
570
afTexCoordX[2] = oneMinusFStepX;
561
571
afTexCoordX[3] = 1.0f;
563
573
for (int j = iSlicesStart; j < iSlicesEnd; ++j)
572
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[3] * mSkySize.width ()),
573
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[3] * mSkySize.height ()));
582
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[3] * mSkyWidth),
583
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[3] * mSkyHeight));
574
584
glVertex3f (x * r * fRadius, y * r * fRadius, z * fRadius);
583
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[0] * mSkySize.width ()),
584
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[0] * mSkySize.height ()));
593
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[0] * mSkyWidth),
594
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[0] * mSkyHeight));
585
595
glVertex3f (x * r * fRadius, y * r * fRadius, z * fRadius);
591
601
y = sint1[j + 1];
594
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[1] * mSkySize.width ()),
595
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[1] * mSkySize.height ()));
604
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[1] * mSkyWidth),
605
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[1] * mSkyHeight));
596
606
glVertex3f (x * r * fRadius, y * r * fRadius, z * fRadius);
598
608
/* bottom-left */
602
612
y = sint1[j + 1];
605
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[2] * mSkySize.width ()),
606
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[2] * mSkySize.height ()));
615
COMP_TEX_COORD_X (mSky[0]->matrix (), afTexCoordX[2] * mSkyWidth),
616
COMP_TEX_COORD_Y (mSky[0]->matrix (), afTexCoordY[2] * mSkyHeight));
607
617
glVertex3f (x * r * fRadius, y * r * fRadius, z * fRadius);
609
619
afTexCoordX[0] -= fStepX;
755
765
if (mDesktopOpacity != mToOpacity ||
756
766
(progress > 0.0 && progress < 1.0))
759
(optionGetInactiveOpacity () -
760
((optionGetInactiveOpacity () -
761
mOptions[mLastOpacityIndex].value ().f ()) * progress))
768
float inactiveOpacity = optionGetInactiveOpacity ();
770
mDesktopOpacity = (inactiveOpacity -
771
((inactiveOpacity - mOptions[mLastOpacityIndex].value ().f ()) *
772
progress)) / 100.0f * OPAQUE;
766
775
topColor = optionGetTopColor ();
767
776
bottomColor = optionGetBottomColor ();
769
778
mPaintAllViewports = (mDesktopOpacity != OPAQUE ||
770
topColor[3] != OPAQUE ||
771
bottomColor[3] != OPAQUE);
779
topColor[3] != OPAQUE ||
780
bottomColor[3] != OPAQUE);
773
782
cScreen->preparePaint (msSinceLastPaint);
838
847
sTransform.translate (priv->mOutputXOffset, -priv->mOutputYOffset, 0.0f);
839
848
sTransform.scale (priv->mOutputXScale, priv->mOutputYScale, 1.0f);
841
GLMatrix mvp = pm * sTransform;
850
GLMatrix mvp = pm * sTransform;
843
852
GLVector pntA = mvp * points[0];
877
886
WRAPABLE_HND_FUNCTN_RETURN (bool, cubeShouldPaintViewport, sAttrib, transform, output, order)
879
float pointZ = priv->mInvert * priv->mDistance;
888
float pointZ = priv->mInvert * priv->mDistance;
880
889
std::vector<GLVector> vPoints;
881
890
vPoints.push_back (GLVector (-0.5, 0.0, pointZ, 1.0));
882
vPoints.push_back (GLVector (0.0, 0.5, pointZ, 1.0));
883
vPoints.push_back (GLVector (0.0, 0.0, pointZ, 1.0));
891
vPoints.push_back (GLVector (0.0, 0.5, pointZ, 1.0));
892
vPoints.push_back (GLVector ( 0.0, 0.0, pointZ, 1.0));
885
894
bool ftb = cubeCheckOrientation (sAttrib, transform, output, vPoints);
895
904
PaintOrder paintOrder,
898
if (!cubeScreen->cubeShouldPaintViewport (sAttrib, transform, outputPtr,
907
if (!cubeScreen->cubeShouldPaintViewport (sAttrib, transform, outputPtr, paintOrder))
902
910
int output = ((unsigned int) outputPtr->id () != (unsigned int) ~0) ?
910
918
int cubeOutput = mOutputMask[output];
912
920
/* convert from window movement to viewport movement */
917
dView = cubeOutput / mNOutput;
918
cubeOutput = cubeOutput % mNOutput;
925
dView = cubeOutput / mNOutput;
926
cubeOutput = cubeOutput % mNOutput;
920
928
if (cubeOutput < 0)
977
986
if ((sa.xRotate < 0.0f && hsize % 2 == 1) ||
978
987
(sa.xRotate > 0.0f && hsize % 2 == 0))
980
origXMoveAdd = hsize / 2;
989
origXMoveAdd = halfHsize;
985
origXMoveAdd = -hsize / 2;
994
origXMoveAdd = -halfHsize;
992
1001
if (sa.xRotate > 0.0f)
993
1002
iFirstSign = -1;
1008
float tsSize = 360.0f / size;
1000
for (int i = 0; i <= hsize / 2; ++i)
1010
for (int i = 0; i <= halfHsize; ++i)
1002
1012
/* move to the correct viewport (back to front). */
1003
xMoveAdd = origXMoveAdd; /* move to farthest viewport. */
1013
xMoveAdd = origXMoveAdd; /* move to farthest viewport. */
1004
1014
xMoveAdd += iFirstSign * i; /* move i more viewports to
1005
1015
the right / left. */
1008
1018
We paint the viewports around xMove viewport.
1009
1019
Adding or subtracting hsize from xMove has no effect on
1010
1020
what viewport we paint, but can make shorter paths. */
1011
if (xMoveAdd < -hsize / 2)
1021
if (xMoveAdd < -halfHsize)
1012
1022
xMoveAdd += hsize;
1013
else if (xMoveAdd > hsize / 2)
1023
else if (xMoveAdd > halfHsize)
1014
1024
xMoveAdd -= hsize;
1016
1026
/* Paint the viewport. */
1017
1027
xMove += xMoveAdd;
1019
sa.yRotate -= mInvert * xMoveAdd * 360.0f / size;
1020
moveViewportAndPaint (sa, transform, outputPtr, mask,
1022
sa.yRotate += mInvert * xMoveAdd * 360.0f / size;
1029
sa.yRotate -= mInvert * xMoveAdd * tsSize;
1030
moveViewportAndPaint (sa, transform, outputPtr, mask, paintOrder, xMove);
1031
sa.yRotate += mInvert * xMoveAdd * tsSize;
1024
1033
xMove -= xMoveAdd;
1027
1036
if (i == 0 || i * 2 == hsize)
1030
xMoveAdd = origXMoveAdd; /* move to farthest viewport. */
1039
xMoveAdd = origXMoveAdd; /* move to farthest viewport. */
1031
1040
xMoveAdd -= iFirstSign * i; /* move i more viewports to the
1032
1041
left / right (opposite side
1033
1042
from the one chosen first) */
1035
if (xMoveAdd < -hsize / 2)
1044
if (xMoveAdd < -halfHsize)
1036
1045
xMoveAdd += hsize;
1037
else if (xMoveAdd > hsize / 2)
1046
else if (xMoveAdd > halfHsize)
1038
1047
xMoveAdd -= hsize;
1040
1049
xMove += xMoveAdd;
1042
sa.yRotate -= mInvert * xMoveAdd * 360.0f / size;
1051
sa.yRotate -= mInvert * xMoveAdd * tsSize;
1043
1052
moveViewportAndPaint (sa, transform, outputPtr, mask,
1044
1053
paintOrder, xMove);
1045
sa.yRotate += mInvert * xMoveAdd * 360.0f / size;
1054
sa.yRotate += mInvert * xMoveAdd * tsSize;
1047
1056
xMove -= xMoveAdd;
1067
1076
WRAPABLE_HND_FUNCTN (cubeClearTargetOutput, xRotate, vRotate)
1069
if (priv->mSky.size () > 0)
1078
if (!priv->mSky.empty ())
1071
1080
priv->gScreen->setLighting (false);
1072
1081
#ifndef USE_GLES
1099
1108
WRAPABLE_HND_FUNCTN (cubePaintTop, sAttrib, transform, output, size, normal)
1101
GLScreenPaintAttrib sa = sAttrib;
1102
GLMatrix sTransform = transform;
1110
GLScreenPaintAttrib sa = sAttrib;
1111
GLMatrix sTransform = transform;
1112
GLboolean glBlendEnabled = glIsEnabled (GL_BLEND);
1104
1114
priv->gScreen->setLighting (true);
1106
unsigned short *color = priv->optionGetTopColor ();
1107
int opacity = priv->mDesktopOpacity * color[3] / 0xffff;
1116
unsigned short *color = priv->optionGetTopColor ();
1117
int opacity = priv->mDesktopOpacity * color[3] / 0xffff;
1109
GLVertexBuffer *streamingBuffer = GLVertexBuffer::streamingBuffer ();
1119
GLVertexBuffer *streamingBuffer = GLVertexBuffer::streamingBuffer ();
1110
1120
std::vector <GLushort> colorData;
1112
1122
colorData.push_back (color[0] * opacity / 0xffff);
1164
1181
WRAPABLE_HND_FUNCTN (cubePaintBottom, sAttrib, transform, output, size, normal)
1166
GLScreenPaintAttrib sa = sAttrib;
1167
GLMatrix sTransform = transform;
1183
GLScreenPaintAttrib sa = sAttrib;
1184
GLMatrix sTransform = transform;
1185
GLboolean glBlendEnabled = glIsEnabled (GL_BLEND);
1169
1187
priv->gScreen->setLighting (true);
1234
1259
glTranslatef (mOutputXOffset, -mOutputYOffset, 0.0f);
1235
1260
glScalef (mOutputXScale, mOutputYScale, 1.0f);
1262
GLdouble mDist2 = 0.5 / mDistance;
1237
1264
if (mInvert == 1)
1239
GLdouble clipPlane0[] = { 1.0, 0.0, 0.5 / mDistance, 0.0 };
1240
GLdouble clipPlane1[] = { -1.0, 0.0, 0.5 / mDistance, 0.0 };
1241
GLdouble clipPlane2[] = { 0.0, -1.0, 0.5 / mDistance, 0.0 };
1242
GLdouble clipPlane3[] = { 0.0, 1.0, 0.5 / mDistance, 0.0 };
1266
GLdouble clipPlane0[] = { 1.0, 0.0, mDist2, 0.0 };
1267
GLdouble clipPlane1[] = { -1.0, 0.0, mDist2, 0.0 };
1268
GLdouble clipPlane2[] = { 0.0, -1.0, mDist2, 0.0 };
1269
GLdouble clipPlane3[] = { 0.0, 1.0, mDist2, 0.0 };
1243
1270
glClipPlane (GL_CLIP_PLANE0, clipPlane0);
1244
1271
glClipPlane (GL_CLIP_PLANE1, clipPlane1);
1245
1272
glClipPlane (GL_CLIP_PLANE2, clipPlane2);
1250
GLdouble clipPlane0[] = { -1.0, 0.0, -0.5 / mDistance, 0.0 };
1251
GLdouble clipPlane1[] = { 1.0, 0.0, -0.5 / mDistance, 0.0 };
1252
GLdouble clipPlane2[] = { 0.0, 1.0, -0.5 / mDistance, 0.0 };
1253
GLdouble clipPlane3[] = { 0.0, -1.0, -0.5 / mDistance, 0.0 };
1277
GLdouble clipPlane0[] = { -1.0, 0.0, -mDist2, 0.0 };
1278
GLdouble clipPlane1[] = { 1.0, 0.0, -mDist2, 0.0 };
1279
GLdouble clipPlane2[] = { 0.0, 1.0, -mDist2, 0.0 };
1280
GLdouble clipPlane3[] = { 0.0, -1.0, -mDist2, 0.0 };
1254
1281
glClipPlane (GL_CLIP_PLANE0, clipPlane0);
1255
1282
glClipPlane (GL_CLIP_PLANE1, clipPlane1);
1256
1283
glClipPlane (GL_CLIP_PLANE2, clipPlane2);
1313
1340
if (!mFullscreenOutput)
1315
mOutputXScale = (float) screen->width () / outputPtr->width ();
1316
mOutputYScale = (float) screen->height () / outputPtr->height ();
1342
float outputWidth = outputPtr->width ();
1343
float outputHeight = outputPtr->height ();
1345
mOutputXScale = (float) screen->width () / outputWidth;
1346
mOutputYScale = (float) screen->height () / outputHeight;
1318
1348
mOutputXOffset = (screen->width () / 2.0f -
1319
(outputPtr->x1 () + outputPtr->x2 ()) / 2.0f) /
1320
(float) outputPtr->width ();
1349
(outputPtr->x1 () + outputPtr->x2 ()) / 2.0f) / outputWidth;
1322
1351
mOutputYOffset = (screen->height () / 2.0f -
1324
outputPtr->y2 ()) / 2.0f) /
1325
(float) outputPtr->height ();
1352
(outputPtr->y1 () + outputPtr->y2 ()) / 2.0f) / outputHeight;
1342
1369
if (!mCleared[output])
1344
float rRotate = xRotate - ((screen->vp ().x () *360.0f) /
1371
float rRotate = xRotate - ((screen->vp ().x () * 360.0f) /
1345
1372
screen->vpSize ().width ());
1347
1374
cubeScreen->cubeClearTargetOutput (rRotate, vRotate);
1364
1391
sa.zTranslate = -mInvert * (0.5f / tanf (M_PI / size));
1366
/* distance we move the camera back when unfolding the cube.
1367
currently hardcoded to 1.5 but it should probably be optional. */
1393
/* Distance we move the camera back when unfolding the cube.
1394
TODO: Currently hardcoded to 1.5, make this configurable via CCSM. */
1368
1395
sa.zCamera -= mUnfold * 1.5f;
1413
1441
if (wasCulled && cubeScreen->cubeShouldPaintAllViewports ())
1414
1442
glDisable (GL_CULL_FACE);
1416
bool paintCaps = !mGrabIndex && (hsize > 2) && !mCapsPainted[output] &&
1444
bool paintCaps = !mGrabIndex && hsize > 2 && !mCapsPainted[output] &&
1417
1445
(mInvert != 1 || mDesktopOpacity != OPAQUE ||
1418
cubeScreen->cubeShouldPaintAllViewports () || sa.vRotate != 0.0f ||
1419
sa.yTranslate != 0.0f);
1446
cubeScreen->cubeShouldPaintAllViewports () || sa.vRotate != 0.0f ||
1447
sa.yTranslate != 0.0f);
1430
1458
bottom.push_back (GLVector (0.0, -0.5, -0.5, 1.0));
1431
1459
bottom.push_back (GLVector (0.0, -0.5, 0.0, 1.0));
1433
Bool topDir = cubeScreen->cubeCheckOrientation (sa, transform, outputPtr, top);
1434
Bool bottomDir = cubeScreen->cubeCheckOrientation (sa, transform, outputPtr, bottom);
1436
mCapsPainted[output] = TRUE;
1438
Bool allCaps = cubeScreen->cubeShouldPaintAllViewports () || mInvert != 1;
1461
bool topDir = cubeScreen->cubeCheckOrientation (sa, transform, outputPtr, top);
1462
bool bottomDir = cubeScreen->cubeCheckOrientation (sa, transform, outputPtr, bottom);
1464
mCapsPainted[output] = true;
1466
bool allCaps = cubeScreen->cubeShouldPaintAllViewports () || mInvert != 1;
1440
1468
if (topDir && bottomDir)
1444
cubeScreen->cubePaintBottom (sa, transform, outputPtr, hsize, GLVector (0.0f, -1.0f, 0.0f, 1.0f));
1445
cubeScreen->cubePaintInside (sa, transform, outputPtr, hsize, GLVector (0.0f, 0.0f, -1.0f, 1.0f));
1472
cubeScreen->cubePaintBottom (sa, transform, outputPtr, hsize, GLVector (0.0f, -1.0f, 0.0f, 1.0f));
1473
cubeScreen->cubePaintInside (sa, transform, outputPtr, hsize, GLVector (0.0f, 0.0f, -1.0f, 1.0f));
1448
1476
cubeScreen->cubePaintTop (sa, transform, outputPtr, hsize, GLVector (0.0f, -1.0f, 0.0f, 1.0f));
1454
cubeScreen->cubePaintTop (sa, transform, outputPtr, hsize, GLVector (0.0f, 1.0f, 0.0f, 1.0f));
1482
cubeScreen->cubePaintTop (sa, transform, outputPtr, hsize, GLVector (0.0f, 1.0f, 0.0f, 1.0f));
1455
1483
cubeScreen->cubePaintInside (sa, transform, outputPtr, hsize, GLVector (0.0f, 0.0f, -1.0f, 1.0f));
1460
1488
else if (allCaps)
1462
cubeScreen->cubePaintTop (sa, transform, outputPtr, hsize, GLVector (0.0f, 1.0f, 0.0f, 1.0f));
1463
cubeScreen->cubePaintBottom (sa, transform, outputPtr, hsize, GLVector (0.0f, -1.0f, 0.0f, 1.0f));
1464
cubeScreen->cubePaintInside (sa, transform, outputPtr, hsize, GLVector (0.0f, 0.0f, -1.0f, 1.0f));
1490
cubeScreen->cubePaintTop (sa, transform, outputPtr, hsize, GLVector (0.0f, 1.0f, 0.0f, 1.0f));
1491
cubeScreen->cubePaintBottom (sa, transform, outputPtr, hsize, GLVector (0.0f, -1.0f, 0.0f, 1.0f));
1492
cubeScreen->cubePaintInside (sa, transform, outputPtr, hsize, GLVector (0.0f, 0.0f, -1.0f, 1.0f));
1485
1513
glCullFace (cullNorm);
1487
GLenum filter = gScreen->textureFilter ();
1488
gScreen->setTextureFilter (filter);
1515
gScreen->setTextureFilter (oldFilter);
1492
1519
PrivateCubeWindow::glPaint (const GLWindowPaintAttrib &attrib,
1493
1520
const GLMatrix &transform,
1494
const CompRegion ®ion,
1521
const CompRegion ®ion,
1495
1522
unsigned int mask)
1499
1526
(attrib.opacity != cubeScreen->priv->mDesktopOpacity))
1501
1528
GLWindowPaintAttrib wAttrib = attrib;
1503
wAttrib.opacity = cubeScreen->priv->mDesktopOpacity;
1529
wAttrib.opacity = cubeScreen->priv->mDesktopOpacity;
1505
1531
return gWindow->glPaint (wAttrib, transform, region, mask);
1616
1642
PrivateCubeScreen::PrivateCubeScreen (CompScreen *s) :
1617
1643
cScreen (CompositeScreen::get (s)),
1618
1644
gScreen (GLScreen::get (s)),
1619
cubeScreen (CubeScreen::get (s))
1645
cubeScreen (CubeScreen::get (s)),
1649
mRotationState (CubeScreen::RotationNone),
1650
mPaintAllViewports (false),
1657
mUnfoldVelocity (0.0f),
1672
mFullscreenOutput (true),
1673
mOutputXScale (1.0f),
1674
mOutputYScale (1.0f),
1675
mOutputXOffset (0.0f),
1676
mOutputYOffset (0.0f),
1677
mDesktopOpacity (OPAQUE),
1678
mToOpacity (OPAQUE),
1679
mLastOpacityIndex (CubeOptions::InactiveOpacity),
1680
mRecalcOutput (false),
1681
mReversedWindowList (0)
1626
1683
for (int i = 0; i < 8; ++i)
1643
mUnfoldVelocity = 0.0f;
1645
mPaintAllViewports = false;
1646
mFullscreenOutput = true;
1648
mOutputXScale = 1.0f;
1649
mOutputYScale = 1.0f;
1650
mOutputXOffset = 0.0f;
1651
mOutputYOffset = 0.0f;
1653
mRotationState = CubeScreen::RotationNone;
1655
mDesktopOpacity = OPAQUE;
1658
mLastOpacityIndex = CubeOptions::InactiveOpacity;
1661
mRecalcOutput = false;
1663
1686
memset (mCleared, 0, sizeof (mCleared));
1665
1688
updateOutputs ();