Exemple #1
0
uint getMaxCustomEventSize() {
#define COUNT_CUSTOM_EVENT(eventType, dataType)\
			if(maxCustomEventSize < sizeof(dataType)) maxCustomEventSize = sizeof(dataType);

    uint maxCustomEventSize = 0;
    CUSTOM_EVENTS(COUNT_CUSTOM_EVENT);
    DUMPHEX(maxCustomEventSize);
    maxCustomEventSize = (maxCustomEventSize+0x3) & (~0x3); // align to sizeof(int)

    return maxCustomEventSize;
}
Exemple #2
0
	// Parameter event points to event object on the MoSync side.
	SYSCALL(int,  maGetEvent(MAEvent* event))
	{
		gSyscall->ValidateMemRange(event, sizeof(MAEvent));	
		MYASSERT(((uint)event & 3) == 0, ERR_MEMORY_ALIGNMENT);	//alignment
		
		// Exit if event queue is empty.
		if (gEventFifo.count() == 0) return 0;

		// Copy runtime side event to MoSync side event.
		*event = gEventFifo.get();
		
		// Copy event data to memory on the MoSync side.
		#define HANDLE_CUSTOM_EVENT(eventType, dataType) if(event->type == eventType) { \
			memcpy(Core::GetCustomEventPointer(gCore), event->data, sizeof(dataType)); \
			delete (dataType*) event->data; \
			event->data = (void*) (int(Core::GetCustomEventPointer(gCore)) - int(gCore->mem_ds)); }

		// Macro CUSTOM_EVENTS is defined in runtimes/cpp/base/Syscall.h
		CUSTOM_EVENTS(HANDLE_CUSTOM_EVENT);
		
		return 1;
	}