void TablePile::timerEvent(QTimerEvent *) { QList<CardItem *> oldCards; _m_mutex_pileCards.lock(); m_currentTime++; foreach (CardItem* toRemove, m_visibleCards) { if (m_currentTime - toRemove->m_uiHelper.tablePileClearTimeStamp > S_CLEARANCE_DELAY_BUCKETS) { oldCards.append(toRemove); m_visibleCards.removeOne(toRemove); } else if (m_currentTime > toRemove->m_uiHelper.tablePileClearTimeStamp) toRemove->setEnabled(false); // @todo: this is a dirty trick. Use another property in the future } if (oldCards.empty()) { _m_mutex_pileCards.unlock(); return; } _fadeOutCardsLocked(oldCards); _m_mutex_pileCards.unlock(); adjustCards(); }
void TablePile::clear(bool delayRequest) { if (m_visibleCards.empty()) return; _m_mutex_pileCards.lock(); // check again since we just gain the lock. if (m_visibleCards.empty()) { _m_mutex_pileCards.unlock(); return; } if (delayRequest) { foreach (CardItem *toRemove, m_visibleCards) _markClearance(toRemove); } else { _fadeOutCardsLocked(m_visibleCards); m_visibleCards.clear(); } _m_mutex_pileCards.unlock(); }