/* RetroArch - A frontend for libretro. * Copyright (C) 2010-2013 - Hans-Kristian Arntzen * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. * * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with RetroArch. * If not, see . */ #include "../general.h" #include "../driver.h" #include #include #include #define MAX_TOUCH 16 struct touches { int16_t x, y; int16_t full_x, full_y; int contact_id; }; static struct touches touch[MAX_TOUCH]; static unsigned touch_count; //Internal helper functions static void process_touch_event(screen_event_t event, int type) { int contact_id; int pos[2]; int i; screen_get_event_property_iv(event, SCREEN_PROPERTY_TOUCH_ID, (int*)&contact_id); screen_get_event_property_iv(event, SCREEN_PROPERTY_SOURCE_POSITION, pos); switch(type) { case SCREEN_EVENT_MTOUCH_TOUCH: touch[touch_count].contact_id = contact_id; input_translate_coord_viewport(pos[0], pos[1], &touch[touch_count].x, &touch[touch_count].y, &touch[touch_count].full_x, &touch[touch_count].full_y); touch_count++; //printf("New Touch: x:%d, y:%d, id:%d\n", pos[0], pos[1], contact_id);fflush(stdout); break; case SCREEN_EVENT_MTOUCH_RELEASE: //Invalidate the finger touch_count--; touch[touch_count].contact_id = -1; input_translate_coord_viewport(pos[0], pos[1], &touch[touch_count].x, &touch[touch_count].y, &touch[touch_count].full_x, &touch[touch_count].full_y); //printf("Release: x:%d, y:%d, id:%d\n", pos[0], pos[1], contact_id);fflush(stdout); break; case SCREEN_EVENT_MTOUCH_MOVE: //Find the finger we're tracking and update for(i=0; i