A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd

xworld: support diagonal buttons on Zen X-Fi

Change-Id: Ia738ecd2a39c0c0772d6f939d549dd5d0eda055e

+19 -6
+11
apps/plugins/lib/keymaps.h
··· 68 68 #define BTN_RIGHT BUTTON_RIGHT 69 69 70 70 #if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 71 + #define BTN_HAVE_DIAGONAL 71 72 #define BTN_UP_LEFT BUTTON_BACK 72 73 #define BTN_UP_RIGHT BUTTON_PLAYPAUSE 73 74 #define BTN_DOWN_LEFT BUTTON_BOTTOMLEFT 74 75 #define BTN_DOWN_RIGHT BUTTON_BOTTOMRIGHT 75 76 #endif 77 + 78 + /* X-Fi doesn't have a separate *_PAD macro */ 79 + #ifdef CREATIVE_ZENXFI 80 + #define BTN_HAVE_DIAGONAL 81 + #define BTN_DOWN_LEFT BUTTON_BOTTOMLEFT 82 + #define BTN_DOWN_RIGHT BUTTON_BOTTOMRIGHT 83 + #define BTN_UP_LEFT BUTTON_TOPLEFT 84 + #define BTN_UP_RIGHT BUTTON_TOPRIGHT 85 + #endif 86 + 76 87 77 88 #if (CONFIG_KEYPAD == HM60X_PAD) 78 89 #define BTN_FIRE BUTTON_POWER
+1 -1
apps/plugins/xworld/resource.c
··· 371 371 res->sys->membuf = res->_memPtrStart + ( MEM_BLOCK_SIZE + (4 * VID_PAGE_SIZE) + 320 * 200 * sizeof(fb_data)); 372 372 res->sys->bytes_left = sz - (MEM_BLOCK_SIZE + (4 * VID_PAGE_SIZE) + 320 * 200 * sizeof(fb_data)); 373 373 374 - debug(DBG_RES, "audiobuf is %d bytes in size", sz); 374 + debug(DBG_RES, "audiobuf is %d bytes in size (%d bytes left)", sz, res->sys->bytes_left); 375 375 376 376 res->_scriptBakPtr = res->_scriptCurPtr = res->_memPtrStart; 377 377 res->_vidBakPtr = res->_vidCurPtr = res->_memPtrStart + MEM_BLOCK_SIZE - 0x800 * 16; //0x800 = 2048, so we have 32KB free for vidBack and vidCur
+3 -3
apps/plugins/xworld/sys.c
··· 63 63 sys->keymap.down = BTN_DOWN; 64 64 sys->keymap.left = BTN_LEFT; 65 65 sys->keymap.right = BTN_RIGHT; 66 - #if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 66 + #ifdef BTN_HAVE_DIAGONAL 67 67 sys->keymap.upleft = BTN_UP_LEFT; 68 68 sys->keymap.upright = BTN_UP_RIGHT; 69 69 sys->keymap.downleft = BTN_DOWN_RIGHT; ··· 75 75 sys->keymap.down = BTN_LEFT; 76 76 sys->keymap.left = BTN_UP; 77 77 sys->keymap.right = BTN_DOWN; 78 - #if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 78 + #ifdef BTN_HAVE_DIAGONAL 79 79 sys->keymap.upleft = BTN_UP_RIGHT; 80 80 sys->keymap.upright = BTN_DOWN_RIGHT; 81 81 sys->keymap.downleft = BTN_UP_LEFT; ··· 87 87 sys->keymap.down = BTN_RIGHT; 88 88 sys->keymap.left = BTN_DOWN; 89 89 sys->keymap.right = BTN_UP; 90 - #if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 90 + #ifdef BTN_HAVE_DIAGONAL 91 91 sys->keymap.upleft = BTN_DOWN_LEFT; 92 92 sys->keymap.upright = BTN_UP_LEFT; 93 93 sys->keymap.downleft = BTN_DOWN_RIGHT;
+4 -2
apps/plugins/xworld/sys.h
··· 64 64 int down; 65 65 int left; 66 66 int right; 67 - #if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 67 + 68 + /* These aren't conditional, even if they aren't used (this is to 69 + * prevent headers and source from having varying defintions of 70 + * this structure, leading to memory corruption */ 68 71 int upleft; 69 72 int upright; 70 73 int downleft; 71 74 int downright; 72 - #endif 73 75 }; 74 76 75 77 typedef void (*AudioCallback)(void *param, uint8_t *stream, int len);