This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository minilauncher-for-slippi.

View the commit online.

commit 5136ee13e533edc0d28469ae05cacccf43cdb78f
Author: Nekobit <m...@ow.nekobit.net>
AuthorDate: Sun Sep 10 16:56:27 2023 -0400

    Scrolling with C-stick
---
 input.c                 | 113 ++++++++++++++++++------------------------------
 main.c                  |   6 ++-
 minilauncher4slippi.cfg |   2 +-
 3 files changed, 49 insertions(+), 72 deletions(-)

diff --git a/input.c b/input.c
index 2c3c403..6e1037f 100644
--- a/input.c
+++ b/input.c
@@ -5,68 +5,32 @@
 Ecore_Event_Key* ev = NULL;
 int event_ready = 0;
 static SDL_GameController* gamepad;
-extern Evas_Object* win, *mainer, *_tab_curr;
-void
-_launch_slippi_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+extern Evas_Object* win, *mainer, *_tab_curr, *tab_scroller;
+void _launch_slippi_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+float y_mod = 0.0f;
 
 void
-bye(void*x, void* y)
+free_ev(void* that, void* who_even_cares EINA_UNUSED)
 {
-	printf("Im die\n");
+	free(that);
 }
 
 
 Eina_Bool
-_timer_cb(void *data)
+_scroll_loop_cb(void* data)
 {
-	if (event_ready)
-	{
-	ev = calloc(1, sizeof(Ecore_Event_Key)*24);
-	ev->timestamp = (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff);
-	ev->window = elm_win_window_id_get(win);
-	ev->event_window = elm_win_window_id_get(win);
-	ev->modifiers = 0;
-	ev->key = "Up";
-	ev->compose = NULL;
-	ev->keyname = "Up";
-	ev->string = NULL;
-	ev->data = ""
-	ecore_event_add(ECORE_EVENT_KEY_DOWN, ev, bye, NULL);
-	//evas_event_feed_key_down(win, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data);
-	//ecore_event_add(ECORE_EVENT_KEY_UP, ev, NULL, NULL);
-	printf("Event sent\n");
-	event_ready = 0;
-	}
+	int x, y, w, h;
+	elm_scroller_region_get(tab_scroller, &x, &y, &w, &h);
+	y += y_mod;
+	elm_scroller_region_show(tab_scroller, x, y, w, h);
 	return EINA_TRUE;
 }
 
-static Eina_Bool
-help(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *_ev)
-{
-	Ecore_Event_Key* ev = _ev;
-	printf("ev->window: %d\n"
-	       "ev->event_window: %d\n"
-	       "ev->modifiers: %d\n"
-	       "ev->key: %s\n"
-	       "ev->compose: %s\n"
-	       "ev->keyname: %s\n"
-	       "ev->string: %s\n"
-	       "ev->data: %p\n", 
-	       ev->window, ev->event_window, ev->modifiers,
-	       ev->key, ev->compose, ev->keyname, ev->string, ev->data);
-	//ecore_main_loop_quit();
-	return ECORE_CALLBACK_DONE;
-}
-
-
 void
 input_sdl_init_thread()
 {
-	ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, help, NULL);
-	ecore_timer_add(.01, _timer_cb, NULL);
-	//ev = calloc(1, sizeof(Ecore_Event_Key)*30);
+	ecore_timer_add(.005, _scroll_loop_cb, NULL);
 	Ecore_Thread* thread = ecore_thread_run(_input_sdl_setup_thread, NULL, NULL, NULL);
-	ecore_thread_local_data_set(thread, "win", win, NULL);
 }
 
 static void
@@ -82,50 +46,55 @@ input_sdl_eventloop(Ecore_Thread *thread)
 		case SDL_CONTROLLERDEVICEADDED:
 			if (!gamepad) {
         		gamepad = SDL_GameControllerOpen(e.cdevice.which);
-        		printf("Found\n");
+        		printf("Found controller.\n");
         	}
     		break;
     	case SDL_CONTROLLERDEVICEREMOVED:
     		if (gamepad) {
             	SDL_GameControllerClose(gamepad);
         		gamepad = NULL;
-        		printf("Removed.\n");
+        		printf("Removed controller.\n");
         	}
     		break;
+		case SDL_CONTROLLERAXISMOTION:
+		{
+			int deadzone = 3000;
+			float r_y = SDL_GameControllerGetAxis(gamepad, SDL_CONTROLLER_AXIS_RIGHTY);
+			
+			if (abs(r_y) > deadzone)
+			{
+				y_mod = r_y / 4000;
+			}
+			else y_mod = 0;
+		}
+		
+			break;
 		case SDL_CONTROLLERBUTTONDOWN:
 		{
-			Evas_Object* focused = ecore_thread_local_data_find(thread, "win");
+			Evas_Object* focused = win;
 			// Setup Event
-			
-			
-			event_ready = 1;
-			
-			ecore_thread_main_loop_end();
-			printf("Run it back.\n");
-			continue;
-			
+			ev = calloc(1, sizeof(Ecore_Event_Key));
+			ev->timestamp = (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff);
+			ev->window = elm_win_window_id_get(win);
+			ev->event_window = elm_win_window_id_get(win);
 
 			// Handle
 			switch (e.cbutton.button)
 			{
 			case SDL_CONTROLLER_BUTTON_DPAD_UP:
-				//elm_object_focus_next(focused, ELM_FOCUS_UP);
-				//ecore_event_add(ECORE_EVENT_KEY_DOWN, ev, NULL, NULL);
-				printf("Up pressed!\n");
-				//ecore_event_add(ECORE_EVENT_KEY_UP, );
+				ev->key = "Up";
 				break;
 			case SDL_CONTROLLER_BUTTON_DPAD_RIGHT:
-				elm_object_focus_next(focused, ELM_FOCUS_RIGHT);
+				ev->key = "Right";
 				break;
 			case SDL_CONTROLLER_BUTTON_DPAD_DOWN:
-				elm_object_focus_next(focused, ELM_FOCUS_DOWN);
+				ev->key = "Down";
 				break;
 			case SDL_CONTROLLER_BUTTON_DPAD_LEFT:
-				elm_object_focus_next(focused, ELM_FOCUS_LEFT);
+				ev->key = "Left";
 				break;
 			case SDL_CONTROLLER_BUTTON_A:
-				evas_object_smart_callback_call(elm_object_focused_object_get(focused), "clicked", NULL);
-				evas_object_smart_callback_call(elm_object_focused_object_get(focused), "activate", NULL);
+				ev->key = "Return";
 				break;
 			case SDL_CONTROLLER_BUTTON_LEFTSHOULDER:
 				prev_tab();
@@ -134,12 +103,16 @@ input_sdl_eventloop(Ecore_Thread *thread)
 				next_tab();
 				break;
 			case SDL_CONTROLLER_BUTTON_START:
+				// Just what it says on the box
 				_launch_slippi_cb(NULL, NULL, NULL);
 				break;
+			default:
+				free(ev);
+				ecore_thread_main_loop_end();
+				continue;
 			}
-			//evas_object_smart_callback_call(elm_object_focused_object_get(focused), "selected", elm_object_focused_object_get(focused));
-			elm_object_focus_set(elm_object_focused_object_get(focused), EINA_TRUE);
-			//elm_object_item_focus_set(elm_object_focused_object_get(focused), EINA_TRUE);
+			ev->keyname = ev->key;
+			ecore_event_add(ECORE_EVENT_KEY_DOWN, ev, free_ev, ev);
 			break;
 		}
 		default:
diff --git a/main.c b/main.c
index 2761fda..b535564 100644
--- a/main.c
+++ b/main.c
@@ -19,7 +19,9 @@ Evas_Object* win;
 Evas_Object* _tab_curr;
 extern Evas_Object* tab_home;
 extern Evas_Object* tab_replays;
+Evas_Object* tab_scroller;
 Evas_Object* _tabs[] = { NULL, NULL };
+Evas_Object* _scrollers[] = { NULL, NULL };
 int _tabs_len = 2;
 int _tabs_i = 0; // home
 Evas_Object* tab_config;
@@ -85,6 +87,7 @@ update_tab(Evas_Object* newtab)
 	if (newtab)
 	{
 		_tab_curr = newtab;
+		tab_scroller = _tab_curr;
 		evas_object_size_hint_weight_set(_tab_curr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 		evas_object_show(mainer);
 		evas_object_show(_tab_curr);
@@ -108,7 +111,8 @@ void
 _launch_slippi_job_end_cb(void *data, Ecore_Thread *thread)
 {
 	//Re-enable button so we can start again
-	elm_object_disabled_set(data, EINA_FALSE);
+	if (data)
+		elm_object_disabled_set(data, EINA_FALSE);
 }
 
 // Need to fork in a thread or EFL spergs out
diff --git a/minilauncher4slippi.cfg b/minilauncher4slippi.cfg
index dca09a6..6c3e146 100644
--- a/minilauncher4slippi.cfg
+++ b/minilauncher4slippi.cfg
@@ -1,3 +1,3 @@
-SSBM.ciso
+SSBM.iso
 slippi-netplay-dolphin
 slippi-playback-dolphin

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to