~smspillaz/compiz-animation-plugin/compiz-animation-plugion.fix_940603

« back to all changes in this revision

Viewing changes to src/animation.cpp

  • Committer: Sam Spilsbury
  • Date: 2011-09-17 01:32:25 UTC
  • Revision ID: git-v1:bb88e5b12751fde5db7d85b5e28278263f2dba74
Added paint list locking system

Show diffs side-by-side

added added

removed removed

Lines of Context:
1576
1576
    return status;
1577
1577
}
1578
1578
 
 
1579
const CompWindowList &
 
1580
PrivateAnimScreen::pushLockedPaintList ()
 
1581
{
 
1582
    if (!mLockedPaintListCnt)
 
1583
    {
 
1584
        mLockedPaintListCnt++;
 
1585
        mLockedPaintList = &cScreen->getWindowPaintList ();
 
1586
 
 
1587
        if (!mGetWindowPaintListEnableCnt)
 
1588
        {
 
1589
            mGetWindowPaintListEnableCnt++;
 
1590
            cScreen->getWindowPaintListSetEnabled (this, true);
 
1591
        }
 
1592
    }
 
1593
 
 
1594
    return *mLockedPaintList;
 
1595
}
 
1596
 
 
1597
void
 
1598
PrivateAnimScreen::popLockedPaintList ()
 
1599
{
 
1600
    mLockedPaintListCnt--;
 
1601
 
 
1602
    if (!mLockedPaintListCnt)
 
1603
    {
 
1604
        mLockedPaintList = NULL;
 
1605
 
 
1606
        mGetWindowPaintListEnableCnt--;
 
1607
 
 
1608
        if (!mGetWindowPaintListEnableCnt)
 
1609
            cScreen->getWindowPaintListSetEnabled (this, false);
 
1610
    }
 
1611
}
 
1612
 
1579
1613
/// This is enabled only during restack animations.
 
1614
/// or when we need to lock it
1580
1615
const CompWindowList &
1581
1616
PrivateAnimScreen::getWindowPaintList ()
1582
1617
{
2404
2439
    mAnimInProgress (false),
2405
2440
    mStartingNewPaintRound (false),
2406
2441
    mPrePaintWindowsBackToFrontEnabled (false),
2407
 
    mOutput (0)
 
2442
    mOutput (0),
 
2443
    mLockedPaintList (NULL),
 
2444
    mLockedPaintListCnt (0),
 
2445
    mGetWindowPaintListEnableCnt (0)
2408
2446
{
2409
2447
    for (int i = 0; i < WatchedScreenPluginNum; i++)
2410
2448
        mPluginActive[i] = false;