Esempio n. 1
0
	virtual void handle_key_event(g_key_event& e) {
		waitingInputLock.lock();
		waitingInput.push_back(g_keyboard::fullKeyInfo(e.info));
		lastInput = g_millis();
		noInputAvailable = false;
		waitingInputLock.unlock();
	}
Esempio n. 2
0
g_component* g_component_registry::get(g_ui_component_id id) {
	if (components.count(id) > 0) {
		components_lock.lock();
		g_component* component = components[id];
		components_lock.unlock();
		return component;
	}
	return 0;
}
Esempio n. 3
0
g_key_info gui_screen_t::readInput() {

	if (waitingInput.size() == 0) {
		g_atomic_block(&noInputAvailable);
	}

	waitingInputLock.lock();

	g_key_info result = waitingInput.front();
	waitingInput.pop_front();
	if (waitingInput.size() == 0) {
		noInputAvailable = true;
	}

	waitingInputLock.unlock();

	return result;
}
Esempio n. 4
0
void poll() {

	static g_lock pollLock;
	pollLock.lock();

	uint8_t status;
	while (((status = g_utils::inportByte(0x64)) & 1) != 0) {
		uint8_t value = g_utils::inportByte(0x60);

		bool fromKeyboard = ((status & (1 << 5)) == 0);

		if (fromKeyboard) {
			handle_keyboard_data(value);
		} else {
			handle_mouse_data(value);
		}

		++packets_count;
	}

	pollLock.unlock();
}
Esempio n. 5
0
void g_component_registry::add(g_component* component) {
	components_lock.lock();
	components[component->getId()] = component;
	components_lock.unlock();
}