void KisTileDataSwapper::doJob()
{
    /**
     * In emergency case usual threads have access
     * to this function as well
     */
    QMutexLocker locker(&m_d->cycleLock);

    qint32 memoryMetric = m_d->store->memoryMetric();

    DEBUG_ACTION("Started swap cycle");
    DEBUG_VALUE(m_d->store->numTiles());
    DEBUG_VALUE(m_d->store->numTilesInMemory());
    DEBUG_VALUE(memoryMetric);

    DEBUG_VALUE(m_d->limits.softLimitThreshold());
    DEBUG_VALUE(m_d->limits.hardLimitThreshold());


    if(memoryMetric > m_d->limits.softLimitThreshold()) {
        qint32 softFree =  memoryMetric - m_d->limits.softLimit();
        DEBUG_VALUE(softFree);
        DEBUG_ACTION("\t pass0");
        memoryMetric -= pass<SoftSwapStrategy>(softFree);
        DEBUG_VALUE(memoryMetric);

        if(memoryMetric > m_d->limits.hardLimitThreshold()) {
            qint32 hardFree =  memoryMetric - m_d->limits.hardLimit();
            DEBUG_VALUE(hardFree);
            DEBUG_ACTION("\t pass1");
            memoryMetric -= pass<AggressiveSwapStrategy>(hardFree);
            DEBUG_VALUE(memoryMetric);
        }
    }
}
void KisTransactionData::endTransaction()
{
    if(!m_d->transactionFinished) {
        DEBUG_ACTION("Transaction ended");
        m_d->transactionFinished = true;
        m_d->device->dataManager()->commit();
        m_d->newOffset = QPoint(m_d->device->x(), m_d->device->y());
    }
}
KisTransactionData::KisTransactionData(const QString& name, KisPaintDeviceSP device, KUndo2Command* parent)
        : KUndo2Command(name, parent)
        , m_d(new Private())
{
    m_d->device = device;
    DEBUG_ACTION("Transaction started");
    m_d->memento = device->dataManager()->getMemento();
    m_d->oldOffset = QPoint(device->x(), device->y());
    m_d->firstRedo = true;
    m_d->transactionFinished = false;
}
void KisTransactionData::undo()
{
    DEBUG_ACTION("Undo()");

    Q_ASSERT(m_d->memento);
    m_d->device->dataManager()->rollback(m_d->memento);

    if (m_d->newOffset != m_d->oldOffset) {
        m_d->device->move(m_d->oldOffset);
    }

    startUpdates();
}
Beispiel #5
0
void map_button_to_action(button_obj_t *button, ActionType_t type, Action_t action) {
    ButtonCallback *cb = NULL;
    if (type == ACTION_TYPE_SHORT)
        cb = &button->release_cb;
    else
        cb = &button->long_press_cb;

	DEBUG_ACTION("Map %d.%S to %d\r\n", button->pin, (type==ACTION_TYPE_SHORT?PSTR("short"):PSTR("long")), (int)action);

	switch (action) {
		case ACTION_KEY_UP:
			*cb = action_key_up;
			break;
		case ACTION_KEY_DOWN:
			*cb = action_key_down;
			break;
		case ACTION_PASTE_KEY:
			*cb = action_paste_key;
			break;
		case ACTION_PASTE_MODE:
			*cb = action_paste_mode;
			break;
		case ACTION_PASTE_QUICK_1:
			*cb = action_paste_quick_1;
			break;
		case ACTION_PASTE_QUICK_2:
			*cb = action_paste_quick_2;
			break;
		case ACTION_PASTE_QUICK_3:
			*cb = action_paste_quick_3;
			break;
		case ACTION_PASTE_QUICK_4:
			*cb = action_paste_quick_4;
			break;
		case ACTION_PASTE_QUICK_5:
			*cb = action_paste_quick_5;
			break;
		case ACTION_PASTE_QUICK_6:
			*cb = action_paste_quick_6;
			break;

		case ACTION_INVALID:
		default:
			*cb = NULL;
			break;
	}
}
void KisTransactionData::redo()
{
    //KUndo2QStack calls redo(), so the first call needs to be blocked
    if (m_d->firstRedo) {
        m_d->firstRedo = false;
        return;
    }

    DEBUG_ACTION("Redo()");

    Q_ASSERT(m_d->memento);
    m_d->device->dataManager()->rollforward(m_d->memento);

    if (m_d->newOffset != m_d->oldOffset) {
        m_d->device->move(m_d->newOffset);
    }

    startUpdates();
}
Beispiel #7
0
void action_paste_quick_6(void *priv) {
    (void)priv;
	DEBUG_ACTION("%s\r\n", __func__);
    key_store_paste(key_store_quick_index(5));
}
Beispiel #8
0
void action_paste_mode(void *priv) {
    (void)priv;
	DEBUG_ACTION("%s\r\n", __func__);
    key_store_paste_name(key_store_index());
    key_store_paste_mode();
}
Beispiel #9
0
void action_key_down(void *priv) {
    (void)priv;
	DEBUG_ACTION("%s\r\n", __func__);
    key_store_decr(1);
}