Commit Graph

319 Commits

Author SHA1 Message Date
Aaron Culliney
d0319bd2ff Splash screen may be dismissable (or not) 2015-11-03 22:41:50 -08:00
Aaron Culliney
871762975a Bump Android version to 1.0.2 2015-11-01 22:03:39 -08:00
Aaron Culliney
ce974177b2 Correct link 2015-11-01 21:00:05 -08:00
Aaron Culliney
b524b5a068 Point to curated public domain images repo 2015-11-01 20:48:46 -08:00
Aaron Culliney
646d64cd92 Don't forget to clean up crash spam ;-) 2015-11-01 19:33:39 -08:00
Aaron Culliney
6de1cae478 Move nativeOnCreate back to proper position as first native call
- This runs discovery of CPU family
    - This sets up native crash handling
2015-11-01 19:26:34 -08:00
Aaron Culliney
4999471ade Work around black screen if someone went to joystick calibration from splash screen 2015-11-01 14:19:40 -08:00
Aaron Culliney
933e99c927 Bugfix Gingerbread GLSurfaceView lifecycle 2015-11-01 14:17:10 -08:00
Aaron Culliney
9a2044f75e Apparently not possible to query this early on Gingerbread devices 2015-11-01 13:43:09 -08:00
Aaron Culliney
3d634004cf Avoid reinitializing preferences every resume of GLView 2015-11-01 13:42:05 -08:00
Aaron Culliney
bf54615198 Refactor menu ownership and dismissal
- Fix incorrect iteration in dismissAll() that could lead to restarting CPU too early
    - Semi-lazy-loaded Apple2MainMenu (which depends on GLSurfaceView/Apple2View as main content) no longer owns
      Apple2SettingsMenu and Apple2DisksMenu
2015-11-01 12:44:31 -08:00
Aaron Culliney
521d1daccf Refactor app startup
- Make sure crash checking is performed as early as possible
    - Minimize calling complex native functions until after splash screen is dimissed
    - Do not attempt to setup/resume OpenGL until after splash screen is dimissed
2015-11-01 10:14:40 -08:00
Aaron Culliney
cbe8a734d0 Move CPU feature discovery into CTOR 2015-10-31 23:00:45 -07:00
Aaron Culliney
6c959a030c Remove unused public methods 2015-10-31 14:03:53 -07:00
Aaron Culliney
acdc8da64f Refactor pause/resume functions to be strictly CPU thread pause/resume 2015-10-31 14:01:47 -07:00
Aaron Culliney
e52f753bf3 Remove commented code 2015-10-31 10:35:24 -07:00
Aaron Culliney
d4adabda93 SNEAKY BUGFIX race condition between UI thread and CPU thread on disk insertion
- Previously we would start the CPU thread and then insert, which has been a long standing race condition, but
      possibly better exposed since the recent disk.c rephactor to use mmap I/O
    - This directly manifested on a Kindle Fire 1st Gen as a crash, and, anecdotally on other devices as a "stalled"
      disk read requiring a reboot of the virtual machine.  Yay for crappy devices helping to expose crappy code! (git
      blame me). =P
2015-10-30 23:19:33 -07:00
Aaron Culliney
5c4ab06612 Hopefully improve crash reporting on older devices by sending a crash summary (possibly in addition to the attachment) 2015-10-30 00:13:14 -07:00
Aaron Culliney
dcd77a4650 Allow and gracefully handle case when external files directory is null 2015-10-28 23:52:54 -07:00
Aaron Culliney
38dce3e212 Check if parent view exists as proxy for isShowing 2015-10-25 22:03:44 -07:00
Aaron Culliney
844d8b815b Losing trust with implementation(s) of Apple2MenuView.isShowing()
- This changes the behavior to rely on non-null status as proxy for showing
    - TODO : investigate why isShowing() appears to be a race/bogus
2015-10-25 21:00:16 -07:00
Aaron Culliney
997461318f Bump Android version code 2015-10-25 20:56:51 -07:00
Aaron Culliney
aae70eb59b Bump Android version to 1.0.0 2015-10-25 14:16:46 -07:00
Aaron Culliney
14099c359a Round the edges of Android icon 2015-10-25 10:56:08 -07:00
Aaron Culliney
c054be6612 Expose download directory 2015-10-24 13:59:57 -07:00
Aaron Culliney
d497810c23 Robustify crash handling 2015-10-24 13:17:47 -07:00
Aaron Culliney
e512a3ca89 Show progress bar when processing/sending crashes 2015-10-24 12:45:52 -07:00
Aaron Culliney
465872e435 Changes that new Android Studio suggests 2015-10-23 00:03:06 -07:00
Aaron Culliney
42c4248a89 Persist GL information from context so we can write to crash log 2015-10-23 00:02:12 -07:00
Aaron Culliney
42a2fac420 Only expose symbols bundled in APK on demand
- Cuts down on launch time
    - Cuts down on wasted app space
2015-10-22 23:30:36 -07:00
Aaron Culliney
f7c8978c79 Ensure that path stack has an absolute path 2015-10-22 23:06:20 -07:00
Aaron Culliney
2cc23cf35d Upgrade to GPLv3 "or later" and update copyrights 2015-10-22 21:09:13 -07:00
Aaron Culliney
9956fc69b2 Bump Android version number 2015-10-20 22:18:24 -07:00
Aaron Culliney
2801b47888 Add auto-genned Android xml file 2015-10-20 21:20:55 -07:00
Aaron Culliney
c6ddfbf763 just assume armeabi for now (appears to allow gdb to work with older Spamsung devices) 2015-10-20 20:44:16 -07:00
Aaron Culliney
4abe8a8c08 Always copy potentially new symbols when booting in debug mode 2015-10-20 20:42:02 -07:00
Aaron Culliney
4e478d369c Refactor disk interface API function names 2015-10-15 22:51:44 -07:00
Aaron Culliney
51f5bc64ba Expose macro globally 2015-10-04 14:39:53 -07:00
Aaron Culliney
f4fa5670b4 Add function-call time tracing for Linux/Android 2015-10-04 14:22:26 -07:00
Aaron Culliney
e161dce3c2 Make app shutdown happen on the GL thread to avoid crashing 2015-10-04 13:39:57 -07:00
Aaron Culliney
446d4817bd Add intent-filter and code to handle inserting disk images
- Appears to work from Cyanogenmod's file browser =P
2015-10-04 13:32:26 -07:00
Aaron Culliney
fd0df1274a Expose file extensions that we can handle 2015-10-04 13:30:38 -07:00
Aaron Culliney
b67cec7b9f Preferences save calls into native already 2015-10-04 13:30:34 -07:00
Aaron Culliney
242c083180 Simplify splash screen showing logic 2015-10-04 13:30:28 -07:00
Aaron Culliney
9e86f493d0 Bugfix CPU step range values 2015-10-04 13:30:22 -07:00
Aaron Culliney
d93a91cca8 Tests build and run on Desktop Linux and Android 2015-10-04 13:29:17 -07:00
Aaron Culliney
e6a1182c32 Unstick make clean 2015-10-04 11:02:57 -07:00
Aaron Culliney
54a92033b0 Add ability to disable crash checking/reporting in release builds 2015-10-02 20:17:29 -07:00
Aaron Culliney
6a8290d22c Fix the about link 2015-10-02 20:16:28 -07:00
Aaron Culliney
b4f871613d Correctly copy keyboard JSON to SD Card 2015-09-30 22:00:08 -07:00
Aaron Culliney
7f32e14a6e Compile against android-10 while we still care about Gingerbread ... nom nom nom 2015-09-27 15:04:10 -07:00
Aaron Culliney
286012c991 Blow up early, blow up often
- Expose and trigger a link error with getpagesize() on Gingerbread devices if we have built the software
      incorrectly.
2015-09-27 14:30:20 -07:00
Aaron Culliney
f7f43aa1b2 Clarify and send more device information in crash report 2015-09-27 14:28:10 -07:00
Aaron Culliney
0da8282b49 Attempt to handle link/load errors gracefully 2015-09-27 13:34:58 -07:00
Aaron Culliney
339d037d4e superstitiously remove synchronization of overridden lifecycle method 2015-09-27 13:31:55 -07:00
Aaron Culliney
b5de4222c3 Handle Java exceptions within Java to the best of our ability 2015-09-27 13:30:16 -07:00
Aaron Culliney
d90b523440 process crashes in-situ on Android device 2015-09-26 15:20:54 -07:00
Aaron Culliney
88be6086a2 Refactor crash testing/reports into separate class/files 2015-09-26 15:16:30 -07:00
Aaron Culliney
a20b2461b5 Include native symbolication information in APK assets 2015-09-26 15:00:07 -07:00
Aaron Culliney
ad2dbd54b0 Android architecture globals 2015-09-26 14:58:09 -07:00
Aaron Culliney
6d63a6bb71 Improved codepaths to recursively copy assets out of APK 2015-09-26 14:56:00 -07:00
Aaron Culliney
0749c83c96 Avoid triggering a native resume when going to background after dismissing all Android UI
- This appeared to occasionally get audio/cpu timing wedged
2015-09-26 14:52:15 -07:00
Aaron Culliney
a6397b22d2 Code to test/exercise Android Breakpad crash handler 2015-09-19 14:52:05 -07:00
Aaron Culliney
79613b49fb Roll back to slightly older target Sdk for sanity 2015-09-19 13:13:11 -07:00
Aaron Culliney
b8921b8441 Integrate Breakpad crash dumper and tools into Android build
- Includes Linux x86_64 binaries dump_syms and minidump_stackwalk
    - Includes adb_sanitize.c tool (gcc -std=gnu11 -o adb_sanitize adb_sanitize.c) for easily pulling local minidumps
2015-09-19 13:11:27 -07:00
Aaron Culliney
43fa597e7d Flip-flopping again on NDK build script options-n-things 2015-09-18 23:05:04 -07:00
Aaron Culliney
ba0b0505e3 Minor nit ... name change 2015-09-18 23:04:30 -07:00
Aaron Culliney
0f9f4a70eb For devices without /sdcard mounted, fall back to alt keyboards supplied in APK 2015-09-17 22:22:40 -07:00
Aaron Culliney
8d3de3ddd0 Avoid NPE on showing splash screen 2015-09-15 22:41:33 -07:00
Aaron Culliney
a7eda527de Bugfix : avoid NPE if /sdcard directory is not present 2015-09-15 20:38:41 -07:00
Aaron Culliney
33fe40ae71 Errors on copying alt-keyboard.json to /sdcard should not be fatal 2015-09-13 15:16:59 -07:00
Aaron Culliney
5dadc922fd Simplify mobile lifecycle at the expense of holding onto audio resources
- This does not seem to be a problem with both modern and older Gingerbread devices
2015-09-13 14:24:17 -07:00
Aaron Culliney
f343ad9dbd Get Mockingboard working somewhat better 2015-09-13 12:43:34 -07:00
Aaron Culliney
54e6b7598e Improved some alt keyboards 2015-09-13 11:37:27 -07:00
Aaron Culliney
11d4ed4c2f Move a joystick-only configuration option to that menu 2015-09-13 11:25:48 -07:00
Aaron Culliney
c8d7f9cba3 Let chooser interface handle skipping rather than native 2015-09-13 11:23:59 -07:00
Aaron Culliney
104c0bbe6e Keep track of all AlertDialog objects to properly dispose of them upon backgrounding 2015-09-13 10:43:53 -07:00
Aaron Culliney
9c475b58eb Better lifecycle management of main menu and splash screen 2015-09-13 10:42:06 -07:00
Aaron Culliney
902cdff495 strict warnings about file I/O were getting annoying 2015-09-13 10:32:17 -07:00
Aaron Culliney
55f04d4f68 Gracefully handle case where /sdcard is removed or otherwise unavailable 2015-09-13 10:01:44 -07:00
Aaron Culliney
dada329a8b Add script that starts Valgrind on Android device 2015-09-12 15:36:41 -07:00
Aaron Culliney
b2cb35c182 Lifecycle tweaks that get Android building again 2015-09-12 15:33:22 -07:00
Aaron Culliney
bc5559c1b0 Allow graphics thread to self-shutdown to avoid segfault on exit 2015-09-08 23:12:20 -07:00
Aaron Culliney
9c98745099 Remove unnecessary call to pump key handling codepath 2015-09-07 11:08:43 -07:00
Aaron Culliney
fa91a2806d Get testing working on Android again 2015-09-06 23:43:26 -07:00
Aaron Culliney
2c97f7af19 Excise HEADLESS ... it was only being used by testcpu 2015-09-06 17:14:38 -07:00
Aaron Culliney
7d4b63e12d Refactor : move reinitialize() to timing module and make static (mostly) 2015-09-06 14:05:18 -07:00
Aaron Culliney
d3ae7d1524 Get ndk-gdb Working For Me (tm)
- Force BASH script to be super verbose
    - Subvert check for COMPAT_ABI (for now)
    - Subvert apparently buggy and unnecessary check for android:debuggable
2015-09-06 13:53:53 -07:00
Aaron Culliney
909b785d07 vanilla ndk-gdb from android-ndk-r10e 2015-09-06 12:40:23 -07:00
Aaron Culliney
8666ca3603 Common baseline for CLI and Android Studio builds
- CLI is still super useful for GDB debugging and running emulator testcases
    - Possibly this maintenance of two build systems can all go away when Android Studio has better NDK support
2015-09-05 14:40:44 -07:00
Aaron Culliney
c3702c54b5 Remove build variants because they are confusing and incompatible with CLI ant builds which I still want to maintain 2015-09-05 14:08:21 -07:00
Aaron Culliney
d7ae39b2a8 Fixes for olde CLI builds 2015-09-05 13:48:42 -07:00
Aaron Culliney
5b59e1c0c0 Android key click preference for GL touch keyboard 2015-09-03 22:25:38 -07:00
Aaron Culliney
2cd60c3c88 Expose all three touch interfaces in the sprouting menu for easier switching 2015-08-29 10:42:24 -07:00
Aaron Culliney
2cd1be791a FTUE: add a button to load disk image on splash screen 2015-08-29 10:10:31 -07:00
Aaron Culliney
0743608a0b UI/UX: default disable lowercase 2015-08-29 09:45:06 -07:00
Aaron Culliney
e4a849e6ae Allow choosing alternate keyboard.kbd.json file from /sdcard (or internal dataDir) 2015-08-28 22:23:43 -07:00
Aaron Culliney
730a09880e Changes insisted upon by AndroidStudio after upgrade 2015-08-27 21:41:04 -07:00
Aaron Culliney
49c99d5ab7 Beginnings of customized alt touch keyboard layout 2015-08-23 15:03:30 -07:00
Aaron Culliney
59cb3e49f9 Enable various GL Touch Keyboard settings 2015-08-23 11:42:45 -07:00
Aaron Culliney
ebe7f82f22 Persist settings for currently inserted disks, and provide a way to eject disks 2015-08-22 14:44:31 -07:00
Aaron Culliney
e39f61d44c Bugfix : case-insensitive disk suffix checks 2015-08-22 13:17:44 -07:00
Aaron Culliney
e4435a1e18 Bugfix disk path persistence : defer applying path to avoid re-entrancy into Apple2DisksMenu constructor 2015-08-22 12:10:52 -07:00
Aaron Culliney
36cb44e1e8 Clean up first-time initialization and insure touch keypad has reasonable defaults 2015-08-22 11:36:12 -07:00
Aaron Culliney
5df1e2400e Add ability to hide joystick controls overlay 2015-08-22 11:05:18 -07:00
Aaron Culliney
704c381ea8 Logging should automatically print function 2015-08-21 23:43:19 -07:00
Aaron Culliney
23bfd24054 Fix synchronization for showing splash screen 2015-08-21 23:35:30 -07:00
Aaron Culliney
3f934ecd3f Fix cycling between different touch devices in the GL touch menu 2015-08-21 23:33:08 -07:00
Aaron Culliney
ec402cd765 Changes from Android Studio 2015-08-21 20:34:59 -07:00
Aaron Culliney
30d761521a Improve splash screen visuals 2015-08-21 20:34:34 -07:00
Aaron Culliney
d2b526783a Improve joystick calibration modes and keypad menus 2015-08-21 20:34:19 -07:00
Aaron Culliney
85407cfabb Refactor GL Touch Joystick (PART II Java-is-not-native changes)
- Adds general key-tap-calibration callback to menus
    - Adds Touch Joystick Keypad settings menu including chooser and calibration
2015-08-18 22:17:12 -07:00
Aaron Culliney
5c3791f5dc Refactor GL Touch Joystick (PART I Native changes)
- Move touch-handling code for "regular" touch joystick into separate file
    - Add new touch-handling code for "keypad" touch joystick.  This is a somewhat complex state-machine to determine
      which key to press depending on a full keypad rosette.
    - Adds a callback to vm.c to hook into keyboard read callback.  Allows us to immediately queue the next key if the
      keypad touch joystick is long-pressed for either axis or button keys.
2015-08-18 21:59:41 -07:00
Aaron Culliney
01bbf5308a Shuffle a bunch of settings around 2015-08-08 11:03:12 -07:00
Aaron Culliney
2673777be7 Various improvements to disk management
- Moves disk management form Apple2Activity to Apple2DisksMenu
    - Handle reading/writing disk images in /sdcard/...
    - Manage hirerarchical navigation
2015-08-08 10:59:14 -07:00
Aaron Culliney
2008c341d5 Move menu management into Apple2Activity 2015-08-05 22:36:07 -07:00
Aaron Culliney
d6f769bcef Allow read/write to /sdcard/... 2015-08-05 22:28:28 -07:00
Aaron Culliney
f1fc3cd4ff Misc stuff for Android build 2015-08-03 21:27:04 -07:00
Aaron Culliney
7344cadfbd More joystick settings including calibration mode 2015-08-02 14:29:34 -07:00
Aaron Culliney
324d900c35 First cut at Android touch joystick configuration 2015-08-01 17:33:29 -07:00
Aaron Culliney
37bb0cc6d8 Refactor slider views and misc 2015-08-01 16:38:15 -07:00
Aaron Culliney
acfb60634e Refactor common menu GUI code into abstract base class 2015-08-01 00:39:34 -07:00
Aaron Culliney
f2ac41e011 Tweak splash screen visuals and add a preferences button 2015-07-31 21:28:42 -07:00
Aaron Culliney
92f4f698db Actually change the cpu timing 2015-07-31 20:30:30 -07:00
Aaron Culliney
0d658932b6 Expose particular settings back to Android so we can persist the values 2015-07-30 23:12:00 -07:00
Aaron Culliney
0bc8869627 nativeOnTouch() now returns various state flags
- Allows playing of a key click sound if a keyboard item tapped
    - Improves stovepiping the native request to show the Android main menu
2015-07-30 22:05:21 -07:00
Aaron Culliney
f5fd2508bf Better expose keyboard/joystick configurations 2015-07-29 21:24:55 -07:00
Aaron Culliney
7067d10949 Android touch menu configurations 2015-07-28 22:22:25 -07:00
Aaron Culliney
25b9f3d3f3 Android lifecycle cleanups
- Differentiate between cpu_pause() when going to menu (and app is still foregrounded, and cpu_pauseBackground()
      when a system backgrounding event has occurred.
    - Destroy/free audio resources owned by CPU thread when background is requested, put CPU thread into waiting upon
      pthread condition to resume.
    - Mobile device now always signals pthread condition to force CPU thread resume from background
2015-07-27 22:36:39 -07:00
Aaron Culliney
16a743fd50 First cut at splash screen on Android 2015-07-26 15:55:07 -07:00
Aaron Culliney
a0cadc83c6 Refactor timing locking behavior
- Do not start CPU thread until after splash screen
    - Insure that only CPU thread can actually create/destroy the audio interfaces
2015-07-26 13:48:24 -07:00
Aaron Culliney
fcd367bd9e Moar Android configuration menus 2015-07-25 14:51:37 -07:00
Aaron Culliney
9ac6448593 Allow configuration of device audio latency/buffersize on Android 2015-07-25 13:09:27 -07:00
Aaron Culliney
36baaa04d5 Allow dynamic configuration of audio latency
- This allows for user-configured device-specific tuning (which makes sense in the Android world with 10,000+
      different devices out there ;-)
2015-07-25 12:57:16 -07:00
Aaron Culliney
38aed7fbf5 Add an about link and misc cleanup 2015-07-25 00:25:01 -07:00
Aaron Culliney
055f098811 Dynamically create audio menu for simplicity 2015-07-25 00:07:58 -07:00
Aaron Culliney
fe34a86c35 Maintain a menu page stack for simplicity 2015-07-25 00:06:20 -07:00
Aaron Culliney
933ef5533a Hook in new audio menu and minor menu cleanup 2015-07-24 22:40:38 -07:00
Aaron Culliney
37a8985f79 First cut at audio settings menu 2015-07-24 22:39:46 -07:00
Aaron Culliney
c2fdebd040 Remove mParentView HACK now that we don't use the system soft keyboard 2015-07-24 22:36:57 -07:00
Aaron Culliney
a60ffb8eb9 Beginning of Android persistent settings 2015-07-21 21:38:28 -07:00
Aaron Culliney
87d7d8a115 Compile Android variant with optimization and debugging symbols 2015-07-12 15:38:28 -07:00
Aaron Culliney
7ca4a2646d Optimize video drawing and API cleanup
- Enforces synchronized access to video dirty bit
2015-07-12 14:13:13 -07:00
Aaron Culliney
da301ded7c Android build tweaks
- Build in ARM mode, not Thumb mode (cpu.S is written in common ARM dialect)
    - Include various ABIs (phat APK)
2015-07-12 13:12:44 -07:00
Aaron Culliney
5f4bf6b1a7 Use single buffer queue callback for OpenSLES/Android
- OpenSLES Callback now performs simple mix of 2 sources (speaker and mockingboard)
    - Avoids multiple callbacks which was a performance penalty especially for low-end droids
2015-07-12 12:59:49 -07:00
Aaron Culliney
66978056c9 Build system tweaks 2015-07-07 21:40:48 -07:00
Aaron Culliney
ada6d7a0be Pause/resume CPU/audio together 2015-07-04 18:17:04 -07:00
Aaron Culliney
20b3e25915 Renamed to get Android build working 2015-07-04 18:14:21 -07:00
Aaron Culliney
2aba9a5ba1 Better OpenSLES backend implementation for Android
- Uses buffer values gleaned from Android system
    - Removes completely unnecessary playq and uses ringBuffer instead with read/write heads
    - ringBuffer includes a certain amount of "overflow" space for callback convenience
2015-07-04 18:01:44 -07:00
Aaron Culliney
951b4518c1 Expose device-preferred audio parameters to native 2015-06-28 12:49:26 -07:00