Commit Graph
21 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 cfcf8cc17c iOS: Remove the iCade support
It has done nothing since 2017. iCade input came through iCadeReaderView,
a hidden UIKeyInput view that decoded the controller's keystrokes, and
f0ba66fcd6 ("add support for smart keyboard") commented out the code
that created it. Nothing has made one since, so the view controller's
iCadeEventDelegate methods and the ICadeTracker behind them were never
called.

iCade controllers present themselves to iOS as Bluetooth keyboards, so
their keys still arrive as hardware keyboard presses, which can be
mapped like any other keys. Modern controllers go through
GameController.framework anyway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:10:37 +02:00
Henrik RydgårdandClaude Opus 5.5 c8c3ba8bb6 iOS: Give the soft keyboard a view of its own
The view controller was the keyboard's text input, and UIKit hands first
responder back to it whenever something it presented goes away: a share
sheet, a photo picker, the alert after an app icon change. Each time,
up came the keyboard, and hideKeyboard calls were sprinkled around to
put it away again, one on a four second timer.

Text input now goes to a small view that only becomes first responder
when a text field gets focus. The view controller is first responder
otherwise, for hardware keyboard presses, but takes no text, so it can't
bring up the keyboard. The workaround hideKeyboard calls are gone, and
so is the endEditing on rotation, which dropped the keyboard if you
turned the phone while typing. Showing and hiding are synchronous now,
since every caller is on the main thread.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:09:41 +02:00
Henrik RydgårdandClaude Opus 5.5 d80c0b9472 iOS: Support System_ShareFile
Offers the file through the share sheet, which works out the type from
the extension. Also gives NativeInit a cache directory, Library/Caches,
which ShareFilesAsZip needs for its zips. That moves the SPIR-V and
download caches there from Documents/PSP/SYSTEM/CACHE, out of backups
and the Files app, which is where Apple wants caches anyway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:57:18 +02:00
Henrik RydgårdandClaude Opus 5 b6b8780cb9 iOS: Remove some dead code
- AudioEngine.mm/.h: not in the source list at all, only in the ARC
  set_source_files_properties list, and written for manual retain/release
  ([super dealloc]), so it couldn't have compiled under ARC anyway. The actual
  audio path is iOSCoreAudio.mm.
- DisplayManager.mm: empty file, referenced nowhere.
- iOSCoreAudioSetDisplayConnected: never called, so g_displayConnected was
  always false and the external-display branch in UpdateSession unreachable.
  Also dropped an unused local there.
- AppDelegate: the "screen" property was never assigned, so both view
  controllers were setting their frame from [nil bounds], i.e. CGRectZero. The
  window sizes the root view anyway. Also removed the stale launchPPSSPP:argv:
  declaration (it lives on SceneDelegate now), a forward declaration of a
  PPSSPPViewController protocol that doesn't exist, and an unreachable return.
- getView: declared on the base class and implemented identically in both
  subclasses, called by nobody.
- bindDefaultFBO: moved the empty implementation to the base class so it isn't
  missing there, and dropped the Metal no-op override.
- The unused delta/lastTimestamp computation in displayLinkFired.

Also fixed the viewWillAppear/viewWillDisappear log messages in the GL view
controller, which claimed to resume and pause the display link but don't.

The getView and bindDefaultFBO changes clear three -Wincomplete-implementation
warnings, and the AppDelegate.h one clears a fourth.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JZk5y4Fzw811WJoNWZb8Sc
2026-08-07 06:56:07 +02:00
Henrik RydgårdandClaude Opus 5 8bfc151395 iOS: Hide the status bar when immersive mode is enabled
prefersStatusBarHidden was dead code - it computed an orientation and a
(commented out) user preference, then unconditionally returned false. So the
status bar was only ever hidden on iPhone in landscape, and only because iOS
does that on its own in compact height.

Now it honors bImmersiveMode from the DisplayLayoutConfig matching the current
orientation, so it also applies in portrait and on iPad. Adds the corresponding
checkbox to the iOS system settings, and updates the status bar on rotation and
when the setting is toggled.

Also fixes a missing break in the ROTATE_UPDATED case in System_Notify, and a
static/non-static mismatch on sceKernelLoadModuleBufferUsbWlan that broke the
build (the header intentionally exposes it for sceVshBridge).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JZk5y4Fzw811WJoNWZb8Sc
2026-08-06 20:56:37 +02:00
Henrik Rydgård 19bb9c5a34 Support the more modern file picker, spawns a lot faster 2026-03-11 00:17:46 +01:00
Henrik Rydgård 42970d1118 Modernize iOS screen resize code a little. 2026-02-13 18:16:26 +01:00
Henrik Rydgård 8e06e4c5c2 iOS: Delete untested multi-screen-management code that uses deprecated APIs 2026-02-13 18:16:26 +01:00
Henrik Rydgård c7370c2e72 Move even more stuff into PPSSPPBaseViewController 2025-10-27 21:38:27 +01:00
Henrik Rydgård d5834d0f84 Move a lot more stuff into PPSSPPBaseViewController 2025-10-27 21:11:39 +01:00
Henrik Rydgård f825db5551 Move camera and location support to PPSSPPBaseViewController 2025-10-27 20:44:34 +01:00
Henrik Rydgård 5e41be136b Move photo picking support to PPSSPPBaseViewController 2025-10-27 20:29:00 +01:00
Henrik Rydgård ae920edf91 iOS: Add a common PPSSPPBaseViewController 2025-10-27 20:19:22 +01:00
Henrik Rydgård 6035ef0652 Implement image file picker on iOS, various buildfixes 2025-05-19 20:41:16 +02:00
Henrik Rydgård 305418813a Add option to control the iOS app switching mode 2024-07-05 20:08:12 +02:00
Henrik Rydgård c26de64d0f iOS: Pass through touches near the task switcher only in-game. Makes the UI better behaved. 2024-05-26 10:27:14 +02:00
Henrik Rydgård aa3256f4e8 Turn off the Vulkan thread when switching away from the app. 2024-05-23 12:52:16 +02:00
Henrik Rydgård b66f7ea909 Vulkan on iOS: Hook up remaining functionality 2024-05-23 09:41:00 +02:00
Henrik Rydgård 5f79046e01 Get Vulkan rendering on iOS (still, need to hook up input etc) 2024-05-23 09:41:00 +02:00
Henrik Rydgård 4726e1f4b3 Remove the last non-interface function on the ViewController 2024-05-22 16:43:18 +02:00
Henrik Rydgård cc37476c79 Add a ViewControllerCommon.h 2024-05-22 16:43:16 +02:00