** This file describes all changes made to Marmalade. ** For highlights and new features see WhatsNew.txt Marmalade is the new name for Airplay SDK. Versions of the software earlier than 5.0 are named as versions of Airplay SDK. Fixed between v5.2.1 and v5.2.2 =============================== - iOS: Fix for multisampled rendering on iOS 5 when using the ICF settings [GL] EGL_SAMPLE_BUFFERS and [GL] EGL_SAMPLES. - iOS: Updated s3eFacebook extension to use the latest facebook-ios-sdk and support single sign on (SSO). For login to function correctly, the "iphone-bundle-url-schemes" must be correctly specified in the application's MKB. See the s3eFacebook example for more details. - Android: Fix for video not being visible on Android 1.6 - Android: Fix for s3eDeviceGetString(S3E_DEVICE_UNIQUE_ID) for tablets. It now returns the first of the following which is available of TELEPHONY_SERVICE unique device ID, Secure.ANDROID_ID & Build.SERIAL - Android: Fix for UnsatisfiedLinkError exception if the back key was pressed during application start-up. - Android: Allow [GL] ICF settings to be ignored instead of failing to choose an egl config and the application failing to start. - Bada: Fix for device freeze if egl surface is destroyed too early during application shut down in response to quit request. - Symbian: Fix for setting video volume before playing video having no effect. - iOS: deployment using AdHoc profiles now works with or without aps enabled. - IwGx: Fix skinning shader on Android devices with Qualcomm Adreno 205 GPU. - Bada: Fix application resuming when transitioning to home screen via the task manager. - Bada: Fix application pausing whilst volume controls are being used. Fixed between v5.2.0 and v5.2.1 =============================== - Windows: Fix assertion in s3eOSReadString. - s3eSound: For for possible clicking sound when channels are paused, stopped and resumed. - s3eTimer: It is now possible to discover the localtime offset at a given point in time (other than now). This means the localtime() now returns the correct value for times in the past and future. - bada: Fixed bug with SMS send. The correct error code is now returned. Fixed crash when you do not have correct privileges. - iOS: Fix full-screen video playback within s3eWebView - iOS: Fix for s3eWebView not respecting ICF setting [s3e] IOSDispScaleFactor - Windows: Fix s3eAudio and s3eVideo not working with QuickTime 7.6.4 onwards - Multiple platforms: Made the behaviour of the EDK MessageBox example more consistent across platforms. - Android: Fix for video not displaying on Android 2.2 - Android: Fix for s3eFacebook extension occasionally crashing due to incorrect usage of JNI reference. Fixed between v5.2.0beta4 and v5.2.0 ==================================== - iOS: Fix crash in s3eZeroConf on suspend/resume. - iOS: Rotation of keyboard locked for Game Center login screen to work around keyboard going out of bounds rotation bug (iOS 5) - OS X: Added support Xcode 4.2 and iOS SDK 5.0 - Android: mDNS now interoperates with iOS ZeroConf more reliably - Android: added option to allow non-standard icon sizes (emits a warning instead of an error). Setting the mdpi icon now overrides android default icon. - Android: fix application lockup issue on Ice Cream Sandwich. - Android: Fixed a bug in the s3eAndroidMarketBilling example. Confirmations should be sent for all S3E_ANDROIDMARKETBILLING_ORDER_INFORMATION notifications, not just for the purchased state. - Android: Fixed s3eVideo so that it plays at the correct desired size. Fixed s3eVideo corruption on Xperia Play after a suspend and resume. - iOS: Fixed a bug in s3eIOSAppStoreBilling where callbacks indicating a purchase restore had failed (product returned with m_ProductStoreStatus of S3E_PRODUCT_STORE_STATUS_RESTORE_FAILED) would never occur. - iOS: Minor improvements to s3eIOSAppStoreBilling: Added error codes and error handling functions. Added S3E_IOSAPPSTOREBILLING_IS_STARTED property. Replaced Init() and Terminate() functions with Start() and End() to conform with S3E API naming conventions - the old versions are currently still supported but have been deprecated. The example has been improved and s3eIOSAppStoreBilling is now included as source in extensions/s3e/s3eAppStoreBilling. - EDK: Fixed Deploy Tool linking errors with some libc/libc++ symbols when deploying apps using iOS extensions. - iOS: Fixed --iphone builds failing to launch Xcode if they use iphone-link-opts in any MKF subproject/extension. - Android: s3eEdkAndroidFindClass now returns a global reference instead of a local reference as only the former can be shared between threads. - iOS: Added support for a 'cache://' drive in s3eFile. This allows files to be saved to an area of memory that is explicitly not backed up by iCloud or iTunes. This is needed to comply with new App Store requirements. Also added IOSFileMoveDataToCache and IOSFileUseCacheForRam [s3e] ICF settings to allow existing data to be migrated from ram to cache folder. - iOS: Fixed s3eVideo crash on iOS 5 after a suspend and resume. Fixed fullscreen video orientation issues. Embedded controls can now be enabled for all iOS versions (via the icf setting IOSVideoShowControls) - IwGL: Fixed state caching issue which resulted in incorrect material lighting and vertex colours on certain gl drivers. - EDK: Fixed iOS extensions failing to build due to undocumented gcc-version setting. - LGTV: Added the missing Use-DRM deploy option to the Deploy Tool GUI. - BBX: Fixed issue with sound corruption (fast playing, squeaking) Fixed between v5.2.0beta3 and v5.2.0beta4 ========================================= - IwUI: Fixed CIwUIView::AddElementToLayout to not redo layout during an update. This allows for changing the layout during an element's Update event. - Multiple platforms: Added custom callback for s3eWebView extension. - Android: Fixed s3eOSExec to process mailto command properly. - Android: Fixed s3eVideo to pass on touch events. - BBX: fix scale of s3eAudio and s3eVideo volume controls. - IwUI: Fix CIwUIElement::GetPosAbsolute & SetPosAbsolute not taking into account the offset applied by a scrollable view. - iOS: Fixed support for remote/push notifications in s3eIOSNotifications. This includes adding support for embeding provisioning profiles in development builds (required for remote notifications) plus example code/scripts and documentation. The legacy S3E_DEVICE_PUSH_NOTIFICATION callback has been removed - this was beta functionality that was never fully implemented. - iOS: Added support for embedding provisioning profiles in development builds and improved iOS singing/re-signing tools. Profiles were previously only embedded in distribution deployments and are not usually required for development; you can now optionally embed them. Embedded profiles *are* required to give permission for certain situations, notably for using Push Notifications. See the s3eIOSNotifications overview. - iOS: Fixed image picker extension to support iPad via popovers. - Android: Fix s3eKeyboardSetInt(S3E_KEYBOARD_GET_CHAR) having incorrect behaviour after user closes soft-keyboard with back key. - bada: ICF setting for halving pointer values (BadaPointHalve) is no longer available (or necessary). - bada: "bada" loader has been renamed to "Bada 1.2 WVGA", "bada WQ" loader has been renamed to "Bada 1.1 WQ". - bada: Removed "Use v1.1 Broker.exe" bada specific option, it's no longer necessary, the new broker works fine with all supported devices. - bada: Touch events now work when video is being played except on WQ devices. - bada: Create signed package option added to bada specific deploy options. This is necessary for store submission. - BBX: Fix issue with gl screen corruption after video played. SysSuspendDuringVideo parameter in the icf file is no longer available, because the only use of this parameter was to workaround screen corruption bug. - BBX: Updated version of underlying blackberry deploy tools. - iOS: Fast stack switching has been disabled for deployments using the debug "lib" version of the loader. This version is used when deploying builds that include any extension libraries and that are set to use a debug loader. The feature has been disabled as a workaround for known issue. Some S3E functions will take longer to run due to this change. Release loaders and builds not using extensions are unaffected. - s3eSound: The use of a user-side thread for executing s3eSound callbacks (originally introduced in 4.5 beta2) has been removed on all platforms. This behaviour was already disabled on iOS, bada, QNX and all platforms that do not support s3eThread, including Symbian. It has been disabled universally due to performance issues and to ensure the behaviour is cross platform. The original restrictions on calling S3E API functions from the sound thread now apply to all platforms (see the s3eSound callbacks API reference). - BBX: Fixed issue with HDMI s3eSound support. - BBX: Fixed issue with unnative rotation direction when application with fixed orientation starts in incorrect orientation (portrait app in landscape, landscape app in portrait) - BBX: Fixed issue with rotation of application in thumbnail mode Fixed between v5.2.0beta2 and v5.2.0beta3 ========================================= - s3eFile.h: moved legacy function (s3eFileGetFree) into s3eFile_legacy.h. - PlayBook: Fix s3eSound output over HDMI. - PlayBook: Fix for audio/video playback when swipping app off screen. - PlayBook: Fix several issues relating to fixed and dynamic screen rotation. - Multiple platforms: Added s3eWebViewClearCache function to the s3eWebView extension. - PlayBook: add support for S3E_DEVICE_LOCALE and S3E_DEVICE_LANGUAGE. - PlayBook: s3eAccelermeter axes are now correct according the device orientation. - Android: Added support for playing audio and video from zip files mounted using the s3eVFS extension. - Android: Fix for ZeroConf search only returning first service discovered. Fixed between v5.2.0beta1 and v5.2.0beta2 ========================================= - PlayBook: Added detailed PlayBook setup and distribution information to the Platform Guide and fixed distribution deployments. - Symbian: Changed s3eCamera to clear out the GL context after stopping. This is to free up VRAM on the Symbian Anna devices. - Android: Added icf setting AndroidWebViewZoomControlsEnable to control the zoom controls for WebView on Android. - iOS: Fixed s3eIOSGameCenter not working on devices running iOS 5. - s3eVFS: New s3eVFS extension for adding/removing extra drives at runtime. - iOS: iOS loaders now compile using llvm-gcc-4.2 and build against iOS 5.0. - Multiple platforms: Implemented a user file system for reading files from a zip archive, la derbh. - PlayBook: Display orientation now works. - PlayBook: s3eVideo now full supported both windowed and fullscreen. - ICF: Add support for !=, <, >, <=, >= comparisons in conditional ICF settings for integer options. - Android: Fixed issue in s3eWebView causing gap between edge and content where the scroll bar should be. - Android: Added documentation and examples for supporting multiple APKs per Android Market entry. Added android-supports-gl-texture deployment option for differentiating multiple APK builds by device texture compression support. - Android: Added android-extra-manifest deployment option for adding arbitrary native settings to the top level of the manifest xml. - Windows: Fixed crash when calling s3eEdkGetHwnd(). - OS X: Added soft ETC decompression capability. - OS X: Fixed issue with function binding causing incorrect linkage, particularly affecting use of IwGL. - OS X: Fixed Egl setup assert when window out of focus on initialization. Fixed between v5.1.0 and v5.2.0beta1 ==================================== - EDK: The variadic functions that were defined as part of the EDK API have been removed and replaced with functions that take va_list. Helper function exists so that no build will break but all extension binaries must be rebuilt. - EDK: Changed behaviour of errors raised on OS thread using s3eEdkSetError. Errors are now set on the thread which next leaves the s3eEdkThreadRunOnOS function. - EDK: Fixed issue preventing OS thread callbacks being dispatched to callback functions registered with s3eEdkCallbacksRegisterInternal. - s3eFile: Added S3E_FILE_REAL_PATH enum value as an input to function s3eFileGetFileString. - s3eWebView: Added s3eWebViewOverlay and s3eWebViewDynamic examples. - s3eWebView: Support added for transparent html, app embed links, and local resources. Fixed some bugs in implementation. - s3eAudio: s3eAudioPlay now takes a default paramater for repeatCount which means it can be invoked with just a filename. - s3eVideo: s3eAudioVideo now takes a default paramater for repeatCount which means it can be invoked with just a filename. - Android: Fixed 1.6 crash on launch (vibrator) issue. - Android: Fixed issue causing timer resolution to be incorrectly reported on some devices. - Android: Fixed crashes in ImagePicker and CameraCapture for Honeycomb devices. - iOS: Fixed unresolved symbol error in --iphone simulator mode. - iOS: Changed variable m_FireDateMS to m_FireDateS in s3eIOSNotificationsToDoItem struct in s3eIOSNotification extension. - iOS: Fixed unresolved symbol in direct-to-iPhone x86 debug mode - Multiple platforms: Fixed linking errors when using RVCT 4.1. - OS X: Added EDK implementation allowing extensions to be created - OS X: Converted s3eWebView to be an external extension on this platform rather than a built in. Source code is now available in the SDK. - OS X: Fixed "Don't understand signal 6" error on abort() - OS X: Fixed bugs in 10.7 (Lion) and Xcode 4.2 - PlayBook: fix s3eOSReadString - PlayBook: s3eDeviceBacklighOn now works. - PlayBook: give application a chance to cleanup when swiped off the screen. - PlayBook: Fixed some suspend/resume issues. - Symbian: Fixed video being restarted after being paused and resumed when s3eVideoStop has already been called. - webOS: Added s3eLocation support. - webOS: Added s3eCompass for webOS 3.0 devices. - webOS: Added support for the HP TouchPad. Setting S3E_KEYBOARD_GET_CHAR will now open/close the virtual keyboard. - mdev: Packages now require an mdev/changelog.txt file which determines the package version. See documentation for details. - mkb: Upstream command will no longer check for updated online files each time the project is run unless the upstream URL changes. - s3e_deploy: Device connection settings for the s3e_deploy command line tool can now be configured in the s3e_deploy.config file rather than specified on the command line. - Documentation: Added new overview pages for icons and splashscreens options and behaviour. Fixed between v5.1.0beta1 and v5.1.0 ==================================== - Linux: python2.5 is no longer required to use the linux SDK. - Multiple platforms: Exposed Authentication Access Token in s3eFacebook extension - mdev: mkb syntax for specifying packages can now include a specific version number. e.g. "zlib =1.2.3-4". - Multiple Platforms: Added s3eWebView API for displaying native web browser views over the current surface. Currently supported on iOS, Android, Windows and Mac OS X. - iOS: Fixed audio/sound issue where sound could be lost after internal audio interrupt events. Notably, this could previously occur if resuming, suspending and then resuming the app in quick succession. - Android: Fixed issue with s3eTouchpadAdvanced example where axes were not centered upon suspend/resume. - Android: Fixed issue causing directional pad to be reported on Samsung Gio - All Platforms: Fixed bug causing MWM splash screen assets to be deployed for all types of license. - iOS: Fixed issue where sound volume would become very high when changing from a given volume level to zero then directly back to the previous value. - Multiple Platforms: Fixed s3eSound issue where samples were lost (frequency appeared to change) if master volume was set to zero then increased again. - Android: Multicast sockets now enabled via s3eSocket API. - Android: ZeroConf extension now available. - Android: Fixed issue causing deadlock when audio paused resumed rapidly with application. - Android: Fixed issue causing vibrator device to be erroneously reported on tablets and other devices without appropriate hardware. - OS X: Fixed issue with executing Xcode builds from the command line with mkb - iOS: Added failed callback and error reporting for s3eIOSIAd. - Android: Fixed left and right channel being reversed for stereo s3eSound generation and increased internal buffer sample size to prevent sound breaking up. - LG TV: Added support for the LG TV platform and the MIPS architecture. Visual Studio now has GCC MIPS build configurations. - Multiple platforms: Improved s3eSoundStreaming example to use both stereo and mono for both input and output. Improved documentation on use of stereo callbacks in s3eSound. - IwUI: Fixed potential crash if events are enqueued during event processing. Fixed between v5.0.1 and v5.1.0beta1 ==================================== - IwGx: Updated the scalable pipeline example to be faster and look better. - IwGx: Fixed issue with world space direction uniforms to shaders. - OpenGL: updated glext.h to include DXT compression constants. - IwGeom: Added assert when normalising zero length vector. - IwGx: Fixed misapplying fog optimisation for user shaders. - Simulator: Upped max tracked allocations and removed misleading errors after that limit is exceeded. - IwGx: Fixed surfaces losing their depth buffers in Recreate. - Android: Added s3eIME extension for natural text input on Android - Windows: Added implementation of strtoull to IwCRT - IwGx: Changed to more inituitive default material settings. Emissive no longer has 0xff alpha value. Ambient and Diffuse default to full-white. The ambient colour of fonts no longer has 0xff alpha, so alpha values can be used in the font colour. The icf setting [GX] LegacyMaterialDefaults=1 can be used to restore the old defaults. - All platforms: accept now correctly clears the readable condition on the the listening socket when using the BSD socket API - Android: Improved IwGx behaviour on Galaxy S 2: Fixed compile errors in default shaders and avoided 24bit surfaces - they aren't supported. - iOS: Added dynamic audio routing using standard iOS audio catagories (as defined by Apple) - iOS: Fixed direct to iphone and iphone simulator builds - OS X: Replaced C stdlib (fixes compatibility issues including wchar support) - All platforms: Fixed DNS lookup callback to return the correct s3eInetAddress object when the callback has to be queued. - iOS: Fixed s3eAudio non resume issue. - All platforms: Implemented RemoveButton function in ExamplesCore - Windows: Fixed dependencies between libraries in GCC builds. - OS X: Added s3eDeviceGetString(S3E_DEVICE_TIMEZONE) implementation. - OS X, iOS: Fixed GL context not destroyed assert on exit - OS X: Fixed quiet assert on start up in simulator and deployment. - IwUI: Fixed long standing issue with 3D IwUI elements not resetting the IwGx sort mode. - Windows: Fixed dependencies for ARM builds in VS2010. - OS X: Fixed issue causing GLES driver not to load correctly - All platforms: Added splashscreen-auto-onblack deployment setting to allow Marmalade splash screen to sit better alongside darker application themes. - Android: Applications could trash memory when suspending surfaces. - Tools: Edits in Source View pane are now correctly loaded into Viewer pane when saving. Fixed between v5.0 and v5.0.1 ============================= - deployment: removed support for deployment to generic arm-linux targets. - Android: Fixed issue with handling of back key and initialization of keyboard. - Android: Support for installing assets included in 'android-external-jars'. - Windows: User data now in /Marmalade rather than /Ideaworks Labs/Marmalade. - All platforms: Removed default Marmalade application, iphone and bada splashscreens. - All platforms: Reduced timeout of Marmalade splash screen for Basic license to two seconds. - All platforms: Changed the order of splash screens so that the Marmalade splash screen occurs after user splash screens. - All platforms: Added the configuration setting [s3e] SplashScreenAutoMinTime allowing users to specify additional minimum time for the Marmalade splash. - IwUI: Fixed clipping of 3D elements. Fixed between v4.5.0beta3 and v5.0 ================================== - Android: Fixing s3eFBRequest_WithURL and jstring memory leaks in s3eFacebook extension. - Android: Report correct IP address on Remote client. - Android: Fixed OUT_OF_MEMORY errors when rotating IwGxSurfacePostProcess example on Nexus One etc. - Android: Fixed crashes in ImagePicker and CameraCapture for Honeycomb devices - Android: Fixed issue with surface buffer allocation on Honeycomb - Android: Added support for front camera's on pre-2.2 Android firmware - Android: Fix issue where FBO fails on devices with broken glGetIntegerv behaviour (e.g. Xoom) - iOS: Fixed issue where s3eTimerGetMs() was not monotonic. The fix is for devices running iOS 4.0 and newer only. Older devices still exhibit the previous behaviour. - iOS: Added internal guards to prevent potential crashes when trying to send data to disconnected peers before the disconnection callback has completed. - iOS: Updated/Moved iOS Remote Notification functionality from s3eIPhone to s3eIOSNotifications - iOS: Updated the Facebook extension to use the new single sign-on API - iOS: Added support for native GameCenter Achievements display through s3eIOSGameCenterAchievementsShowGUI method - iOS: Fixed a beta issue where apps using extensions would exit on startup when run on devices that do not support armv7 (i.e. those that do not support app-switching.) - Windows: Fixed crash when viewing polled metrics. - OS X: Fixed issue in deploy tool when deploy air or zest file - Multiple platforms: Fixed non-truncation of long printf output - Multiple platforms: Fixed config errors during IwGxInit - Multiple platforms: Fixed error throwing bad_cast in VC2005+ - Multiple platforms: Added support for orthographic projection to IwGx. - LaunchPad: Added a variety of new project templates. - EDK: Fixed issue causing duplicate functions to be generated for callbacks - EDK: Renamed and deprecated some s4e options for consistency. runonmainthread, noassert and nolock are now run_on_os_thread, no_assert and no_lock. Old names will still work at present. Fixed between v4.5.0beta2 and v4.5.0beta3 ========================================= - iOS: Added iOS Local Notification functionality - iOS: Fixed ARM and x86 --iphone mode builds for on device debugging and Xcode simulator builds. - Android: Fixed bug causing deadlock on surface rotation. - Android: Fixed issue in s3eCamera extension so camera now pauses and resumes appropriately - Android: Fixed issues with soft keyboard visibility after suspend, resume, rotation and hard keyboard events - bada: bada WQ is no longer beta. - bada: bada WQ is no longer beta. - Windows Mobile: Windows Mobile 6.x has been made a beta platform. - Linux: Linux (FB) and Linux (SDL) has been made beta platforms. - Windows Mobile: Windows Mobile 6.x has been made a beta platform. - OS X: Fixed issue with building android extensions - Multiple platforms: Added s3eHashData function - Multiple platforms: Removed deployment options for Brew, Symbian 7, Symbian 8, Maemo and UIQ3. - Multiple platforms: Removed deploymnent options for Brew, Symbian 7, Symbian 8, Maemo and UIQ3. - Multiple platforms: Allow ZDepthFixed to go to full 32bit size. Fixed Fixed quaternion vector rotation. - Exporters: Added support for Maya 2012 - Documentation: Added new quick links sections to the front page. Fixed between v4.5.0beta1 and v4.5.0beta2 ========================================= - s3eThread: Callbacks now only fire on the thread that registered them, rather than the first thread to call s3eDeviceYield. - s3eSound : s3eSound now uses a user-side thread for executing its callbacks, so the restrictions on calling the S3E API from the sound thread have gone. This change is present on all platforms except Symbian. - iOS: Fixed s3eGameCenter callback so S3E_GAMECENTER_ERR_NONE is return if no errors have been found on submitting an achievement - iOS: Fixed --iphone builds in Xcode 4. armv6 builds are no longer supported in this configuration. Only armv7 supported, for iPhone 3GS onward) - iOS: Fixed issue where Game Center GUIs could be displayed in the wrong orientation on iPad. - iOS: Fixed iPhone Sign Request Tool failing to find keys on Windows. - Android: Added deployment option to specify additional entries into string.xml file - Android: Fix JNI reference leak in s3eAudioPlay function - Android: Updated s3eTouchpad to work with updated Xperia Play firmware - Android: Added s3eTouchpadBasic and s3eTouchpadAdvanced examples to replace s3eTouchpad example. - Android: Fixed Suspend/Resume issue causing application hangs - Bada: Sound now has a larger volume scale by default to bring it in line with audio and video. - Symbian: Fixed GL memory manager session leak for Symbian^3 devices. - Symbian and Windows: Fixed case when the user has paused the audio but it resumed after the device has done Paused/Resume events. - EDK: Added byte, float and double as automatically converted types to extension builder - OS X: Fixed issue causing java mkb files to load in Xcode - OS X: s3eOSExec extension API implemented - OS X: SDK now works correctly when installed in a directory containing spaces. - OS X: Added Airplay application to run s3e and air files from Finder - OS X: Added s3e_config utility to switch between multiple installations of Airplay. - OS X: Fixed issue causing the simulator to fail to find s3e executables in Xcode 4 when global build location preference set to ignore project settings - Examples: example code for using open source libraries is now in exampels/third_party. - Examples: Removed examples/Basic. examples/s3e/s3eHelloWorld replaced it as the reference Airplay "Hello World" program - Documentation: Improved platform call-out documentation with better layout and per-function information. - Documentation: Reorganised various sections to make information easier to find. Notably, the User Guide has been removed and most of its contents moved to the root folder. - stdlib: The stdlib assert macro will never be defined in if NDEBUG is defined. - stdlib: pthread_self and pthread TLS now work from the sound thread. - Visual Studio 2010: Fixed issue with path seperators causing 'could not remove s3e/bin from path' errors. - mkb: warning are now given when the case of a filename specified in the an mkb file does not match the filename on disk. Only effects systems with case insensitive filesystem such as win32. - mkb: scons can now be used to build win32 s86 binaries meaning that it is possible to build win32 binaries without Visual Studio installed (only the command line compiler tools from Microsoft are required). - stdlib: fix type of time_t (should always have been signed long) - stdlib: fix definition of NULL under gcc (will now generate warnings where NULL is used in place of an integer). - modules/third_party: third_party modules are now delivered outside the main sdk install using 'package' mkb keyword or the 'mdev' command line tool. - Multiple platforms: Removed IwGxGetVRAMSize and IwGxGetVRAMPointer. These functions were of historical interest only, were misleadingly named and did not link anyway. - Multiple platforms: If sprite primitives fell back to triangle lists and their verts were specified in sub-pixels the output was in the wrong place. - Multiple platforms: IwDebugPrimLine was clipped incorrectly if both points were off the screen. - Multiple platforms: IW_USE_CALLSTACK is now defined on by default in debug builds. - Multiple platforms: Support for generic cross-platform "icon" and "splashscreen" deployment settings. "splashscreen" will also push into the icf splashscreen if no splashscreen is set. Adding the line splashscreen="" will disable splashscreen and match previous versions. - Multiple platforms: IwGL would crash if the shader cache was active and a glUniform function was called with a negative location. Application shader/program handles were also not consistent between devices. - Multiple platforms: Fixed iwgl using RVCT - QEMU: Fixed bug causing GetChar() to hang on Release builds - Tools: Fixed crash when editing property sets in UI Builder Fixed between v4.4.0 and v4.5.0beta1 ==================================== - mkb: scons builds now correctly depend on the libraries they use. Previously updating a library would not require projects to be relinked. - iOS: Added iOS clipboard implementation - iOS: EDK extensions can now be built using the iOS 4.3 SDK - iOS: s3eDeviceBacklightOn will now only reset the Backlight timeout rather than disable it completely. - iOS: Added s3eMicroTransactionCompleteTransaction to s3eMicroTransaction and m_Retain to the s3ePaymentTransaction struct so that applications can wait until receipt verfication/data-provisioning has been completed before finalising a transaction. - Android: Fixed the s3eFacebook extension on the Xperia Play. - Android: Added s3eInAppBilling to the EDK which exposes Android Market's In-App Billing functionality. - Android: Changed the JNI code generated by the EDK to have a more streamlined control flow. - Android: Fixed an exception that occasionally occurred while pausing with s3eLocation active. - Android: Prevent notifications from pausing the application on Honeycomb. Re-enable the volume notification. - Android: Added support for playback of MP4 files with AAC sound. - Android: eglGetProcAddress would return non-NULL for any function. - Android: Fixed issue with PAUSE callback blocking, which in turn caused audio not to stop on suspend. - Android: Fixed s3eDeviceBacklightOn on Honeycomb tablets by changing the the underlying function from userActivity to newWakeLock. - Android: Prevented the application from pausing when the volume rocker is used by disabling the volume notification on Honeycomb. - Android: Update Android to use the Honeycomb SDK. - Android: Fixed soft keyboard character events when using a GL surface. - Bada: Support for GL extensions now available. - Bada: Fix bug which caused sockets to crash if no connection was available. - Symbian: Fixed the app freezing during suspend/resume while s3eOSReadString is asking for an input. - EDK: extension building tool is now known as edk-build rather than make_extension, and it now lives in s3e/bin. - EDK: New command line tool in s3e/bin for building edk modules: edk-build - EDK: The definition of s3eEdkThreadRunOnOSAsync has been changed to return void and take a s3eEdkThreadVoidFunc argument. - EDK: The Windows Simulator would not load debug builds of extensions automatically. - EDK: Added s3eEdkGetAppVersionMajor and s3eEdkGetAppVersionMinor so that extensions can check the s3e version the application was built against. - mdev: initial version of mdev tool added to the SDK. - Documentation: Added colour-coded callouts to indicate if subdevices are supported by a given platform, plus lists of per-platform caveats for types/functions and a support overview page for each platform. - Documentation: Added "Built-In Extension Functionality" section to EDK docs and documentation for all S4E options. - stdlib: add implementations of getifaddrs and getnameinfo. - stdlib: Fix fpclassify() which was missing for gcc builds. - stdlib: pthread_detach cancelled the thread. - stdlib: type of time_t changed from uint to ulong. - OS X: Fixed bug in makefile builder causing incorrect paths to be used for compiling code in Ideaworks modules from project files outside the installation tree - OS X: Fixed bug causing resize handle to trigger quit event in examples - OS X: Added Xcode 4 support to makefile builder. The current version returned by xcode-select will be used. - Windows: fixed bug causing incorrect s3eVideo alignment when using skin - Windows: improved skin support in simulator and added Xperia Play skin with clickable zones and touchpad support. - Windows: Exceptions are now handled in all threads. - Windows: Fixed return value for s3eCameraCaptureIsFormatSupported - Windows: Fixed asserts on startup on Intel GMA chipsets. - mkb: add 'jflags' option that allows custom javac flags when building java projects. - Multiple platforms: Using shared texels mechanism with non-palettised textures could crash without warning. - Multiple platforms: Fixed IwHTTP stalls when multiple instances used in high frequency situations. - Multiple Platforms: Extension function with names that start with s3eExt have been deprecated and replaced by the standard s3e prefix. All functions have fall throughs to the new functions. - Multiple platforms: Added IwGxAugmentedReality example. - Multiple platforms: Fixed glGetError behaviour under IwGL. - Multiple platforms: Added s3eCameraFrameRotation enum member to frame callback for s3eCamera. - Multiple platforms: The limit for the number of extension functions that can be exported has been upped. This fixes an 'Out of dynamic callback space' error - Multiple platforms: Allow PVRTC compression up to 2048x2048. - Multiple platforms: Added s3eTouchpad to handle touchpad events on the Xperia Play. This includes a s3eTouchpad example that provides a fallback to on-screen dual stick controls if the touchpad is not present (IwAnalogSticks). - Multiple platforms: Iw2D will now batch primitives (FillRect etc.) as well as images. Images will also batch more effectively. - Multiple platforms: Iw2D now batches non-image primitives. - Multiple platforms: Fixed asserts on OpenGL ES 1.0. Fixed between v4.3.15 and v4.4.0 ================================ - iOS: AMR audio codec support is not supported from iOS 4.3 onward (no longer supported by Apple) - iOS: s3eFacebook extension now uses OAuth 2.0 authentication. - iOS: Added support for playing sound/audio when application is suspended or the screen is off, using the iphone-backgroundmode-audio deployment option. On all devices, this will cause sound to continue to play when the screen is off/locked. On iOS4 devices that support multi-tasking, audio will also continue to play when the app is in the background. - Android: Add support for EGL_XXX_SIZE parameters and alpha surfaces. Improve s3eSocketGetInt return values and report the network type. Correctly report the AAC and MIDI codecs as supported. - Symbian: s3eCompass API has been implemented for Symbian devices that has the Compass (Magnetometer Sensor) built-in. - bada: The location api now functions correctly on the 8500, and the new extended location api is supported across all bada devices. - bada: Slight FPS improvement and reduced "fps jitter" across all devices. - bada: OSExec launch application functionality added for WQ devices. This requires the APP_SERVICE privilege. This is a SYSTEM privilege only available to those with partner accounts on store submission. Please select the "Use partner privileges" bada specific deploy option to enable this feature. - bada: glGetString(GL_EXTENSIONS) now returns a full list of extensions supported by the device. - bada: sendTo broadcast now works correctly and no longer causes abnormal termination. - bada: getlocalHost now returns the correct port of a socket which was bound to 0. - Maemo: Maemo platform has been moved to Beta status. This means that we will actively investigate/fix issues found by users, but not under any Service Level Agreement (SLA). - BREW: BREW platform has been moved to Beta status. This means that we will actively investigate/fix issues found by users, but not under any Service Level Agreement (SLA). - Windows: Fixed stack overflow loading GL DLLs - Windows: Heaps are now filled with the correct initialisation pattern as per the config dialog box (default is 0xcc). - Windows: A configuration dialog has been added for timer functions, that allows you to set the local time offset, control timer accuracy and control availability of the high resolution timer. - Windows: The socket dialog box has been extended to support limiting the maximum number of bytes returned by s3eSocketSend and s3eSocketRecv - Windows: Windows runtimes (simulator and non-simulator) now support the high-resolution timer API - OS X: Fixed stability issues on Mac ARM Emulator which were due to x86 stack alignment. - OS X: Upgraded GCC used by the Mac SDK to bring it into line with the PC version (Codesourcery 2010 q1). - Multiple platforms: Many improvements to threading support. Better support for pthreads. iOS threads are now working correctly. - Multiple platforms: Many improvements to IwGL. IwGL (and thus IwGx) will now use the current EGL context if one is active when they are run. - Multiple platforms: Added advanced position and satellite information to the S3E Location API. Most new functionality is currently only supported on bada and Symbian due to platform limitations. - Multiple platforms: Added s3eSurfaceClear() and s3eSurfaceBlank() for efficiently clearing the s3e surface. - Multiple platforms: s3eFileGetFileInt() now internally flushes file handles, which may resolve issues if it's called whilst file writing is taking place - Multiple platforms: The behaviour of platforms which suspend GL has changed. Previously the game would read the ICF setting EGLTerminateOnSuspend and always terminate GL when the application suspended. This was not ideal because GL didn't have to be terminated for all suspensions and sometimes GL would need to be terminated for other reasons (e.g. to free memory to play a video). In the new scheme applications receive separate callbacks (S3E_GL_SUSPEND/S3E_GL_RESUME) when the platform requires EGL to terminate or resume. The application can use the S3E_GL_MUST_SUSPEND property to detect whether these callbacks will ever fire (i.e. whether caching of state is necessary). EGLTerminateOnSuspend will remain set for current platforms, but applications should move over to the new scheme for future compatibility. IwGx now uses the new scheme, so Airplay Studio applications should behave correctly automatically. - Multiple platforms: s3eRealloc/s3eReallocBase will now only perform reallocations on an OS-direct heap if the current heap ID is set to it. - Multiple platforms: Before opening a file fopen would check for directory status for the path. This was very slow with large derbh files because the implementation of file listing was pathologically slow when the directory did not exist. This version fixes both problems - opening a directory from derbh is faster, and fopen no longer checks for directory status on every open (it will only check when s3eFileOpen fails). - Multiple platforms: Fixed case sensitivity in derbh mounted directories. - Multiple platforms: Updated the GL headers to the latest Khronos release. - build system: Added support for build jar files directly from MKBs by specifying "platform JAVA". This include support for preprocessing java source if the option "preprocess-java" is set. - Configuration Utility: This now writes to user registry areas and no longer requires administrator privileges to run - stdlib: assert macro now compiles to nothing in release builds. Fixed between v4.3.14 and v4.3.15 ================================= - Android: Extend eglGetProcAddress to look up GL extension symbols in the gl library. - Android: Removed more release build tracing. - Android: Fix for deadlock issue using blocking sockets. - Multiple platforms: Fix for potential multiplication overflow using IwGx debug primitives. - Multiple platforms: Allow specifying a separate memory bucket for IwUI related allocations. - Tools: Fix for command line version of Font Builder. Fixed between v4.3.13 and v4.3.14 ================================= - iOS: Fixed resign tool. - webOS: Removed MSDOS line endings from deployment files. - Android: Removed some trace messages from release build causing failed submissions to app store. - Android: Support new Android SDK location. - Multiple platforms: Fixed an issue where the format of surfaces would change during suspend and resume. - Multiple platforms: Support TTF fonts in UI Builder. - Multiple platforms: IwUI will now render in screen space by default. This should be more intuitive in general. The old behaviour can be restored by calling CIwUIView::SetCoordSpace with IW_GX_VIEWSPACE. Fixed between v4.3.12 and v4.3.13 ================================= - iOS: Added s3eGameCenterShowLeaderboard function to show board with native UI. - iOS: Fixed a number of issues with iAd. Orientation will now be respected correctly and the banner ads should be touchable. - Android: Fixed mailto:// links in Android 2.3+ - Bada: Fixed another issue where DNS lookup could hang. - Multiple platforms: Added s3eExtOSReadUserStringUTF8WithDefault to initialise the dialogue with a default value. Fixed between v4.3.11 and v4.3.12 ================================= - iOS: iphone_bundle_localisations deployment option renamed to iphone-bundle-localisations. Documentation added for how this option is used to localise native built-in UIs like Game Center. - iOS: Updated documentation to include Ad Hoc deployment, localisation, custom manifest specification and additional Game Center information. - Brew: Fixed crash on closing the clamshell during an interrupt or start-up on a number of Brew devices. LG VX5500, LG VX5600, Motorola VU204, Motorola W766, LG VX9900 and Motorola V750. - iOS: Fixed an issue where OSReadString could hang when exiting the dialogue. - Bada: Fixed an issue where DNS lookup could hang. - Android: Added an icf setting ([gx] AllowAndroidPixelFlinger) to make iwgx use the Android software GL driver rather than the Airplay SW renderer. - Windows: Fixed an issue when trying to use more than 32mb of memory in qemu. Fixed between v4.3.10 and v4.3.11 ================================= - iOS: Fixed issue where application could freeze after accepting invites in Game Center. - iOS: Added support for starting "hosted" Game Center matches with the native GUI via s3eGameCenterMatchmakerHostedGUI. - iOS: By default, any ongoing matchmaking GUI is cancelled when the user accepts an invite. Use [s3e] iphoneGameCenterInviteCancelsMatchmaking ICF setting to change this behaviour. - iOS: Fix issue where Music Picker (s3eBackgroundMusic) can display status bar in incorrect orientation when using [s3e] FixScreenOrientation in the ICF. - iOS: Fix issues with iAd display and rotation on larger screen sizes. - iOS: Fixed S3E Sound/Audio failing to resume when application regains focus while displaying a blocking native UI such as OS Read String, S3E Background Music Picker or Game Center. - Android: Show software keyboard when hardware keyboard is closed. - Tools: UI Builder now supports editing of custom elements. - Tools: Added iPad resolution option to UI Builder. - Tools: Fixed crash in UI Builder when removing a signal slot. - Documentation: iOS Deployment Guide updated. Fixed between v4.3.9 and v4.3.10 ================================ - iOS: Fixed colour-banding occurring when using Full Screen AntiAliasing ([GX] EGL_SAMPLE_BUFFERS icf setting). - Android: Suspending with active surfaces could result in surface contents being displayed on the screen. The screen will now be blanked. - Tools: Fixed exporting from Max with multi-materials. - Tools: iPad sized layouts can now be used in UI Builder. - Tools: Fix crash duplicating elements - Tools: Fixed issue with non-ASCII windows usernames - Android: Add support for setting the location update interval and distance using icf settings. Fixed between v4.3.8 and v4.3.9 =============================== - Multiple platforms: IwImage GIF loader now supports interlaced GIFs and GIFs with any number of extension blocks - Multiple platforms: IwGx could fail to correctly restore surfaces if the resume process was interrupted very early. - Multiple platforms: Depth offsets in HW transform mode were applied inconsistently with SW transform mode. They are now consistent. - Brew: Fixes for some devices the case when a key is pressed before the splash screen displays, BREW devices will freeze & eventually powercycle. Fixed between v4.3.7 and v4.3.8 =============================== - Symbian: Fix Symbian pause/resume so that it doesn't try to send the same event callback twice. Previously, under certain circumstances the phone could send pause/resume events while the application was still running the resume code. - Multiple platforms: Improved behaviour when sampling off the lower edge of non-power-of-2 textures. - Multiple platforms: Fixed the documentation of the CIwGxFontPreparedData version of IwGxDrawText to match the actual behaviour. - Multiple platforms: Fixed loading of TGA files with unaligned pitches. - Windows Mobile: Added implementation to get S3E_DEVICE_IMSI. Fixed between v4.3.6 and v4.3.7 =============================== - Multiple platforms: Fixed crashes affecting dz files without sub directories. - iOS: iAd resizes screen only after the banner has loaded (instead of showing a black area). - Android: Fixed accelerometer orientation for landscape devices. - Android: Do not report AAC available on Nexus One (it isn't). - Tools: Fixed version mismatch for Mac exporters. Fixed between v4.3.5 and v4.3.6 =============================== - build system: rvct 4.1 is now properly supported. Various issues regarding variables and selecting the compiler in the configuration tool have been fixed. - bada: DNS lookups now function correctly if the net connection is restarted whilst the app is running. - bada: Fixed an issue where sound from the app would briefly play after exiting and launching another, non-Airplay app. - bada: Fixed an issue where audio did not stop when going to sleep after a period of inactivity on bada WQ devices. - bada: Fixed a crash on application termination/suspension that was due to drawing to a context that was no longer valid. - iOS: Chinese simplified and Chinese traditional device language settings are now reported correctly. - iOS: Fixed an issue where iAd banners were not selectable in landscape orientation. - Symbian: s3eOSExec will no longer cause the application to exit if the web browser returns an error code. Fixed between v4.3.4 and v4.3.5 =============================== - Android: Fixed s3eDeviceBacklightOn after the application was restarted. - Android: Added support for s3eSocketGetInt(S3E_SOCKET_NETWORK_TYPE). - Android: Fixed result of s3eSocketGetInt(S3E_SOCKET_NETWORK_AVAILABLE) and added ACCESS_NETWORK_STATE permission to manifest. - Android: Enable the AAC audio codec. - Android: Add support for 888 surfaces via [GL] icf settings. - iOS: Fixed video display failing if s3eSurfaceShow is called after IwGxInit. - iOS: s3eOSReadString dialog is now always repositioned to the center of the available screen area and correctly handles interrupts and multiple- line titles on all iOS firmwares and devices. - iOS: Added iphoneLocationUseNavigationAccuracy ICF setting to allow s3eLocation to support iOS's BestForNavigation accuracy option. - Multiple platforms: Fixed the reporting of simple and traditional Chinese languages. - Multiple platforms: Before opening a file fopen would check for directory status for the path. This was very slow with large derbh files because the implementation of file listing was pathologically slow when the directory did not exist. This version fixes both problems - opening a directory from derbh is faster, and fopen no longer checks for directory status on every open (it will only check when s3eFileOpen fails). Fixed between v4.3.3 and v4.3.4 =============================== - Multiple platforms: Added icf settings AudioVolumeScale, VideoVolumeScale, SoundVolumeScale. These allow individual control of the volume scales for Audio, video and sound whilst still keeping a relative consistency between scales when pressing the device volume buttons. - Multiple platforms: Added icf setting NumVolumeSteps: giving control of the number of volume steps on the device when pressing the device volume buttons. - Bada: Behaviour when using the volume buttons has been improved. The sound, audio and video volumes now change consistently. - stdlib: gethostbyname now correctly returns a h_length field value of 4 instead of 1 - stdlib: Fixed poll() sometimes calling s3eDeviceYieldUntilEvent with a negative number of milliseconds Fixes between v4.3.2 and v4.3.3 =============================== - Symbian: Fixed case when the software surface became active and blocked the GL surface after resuming from sleep mode. The Symbian loader will now not paint the software surface at all once GL has started. - Symbian: Added icf option DoNotPauseOnLockScreenAndKeys. Set this to 1 to keep the application running while in the Lock screen and keys state. This is not the same as the phone's sleep state. This has now change the default behaviour to pause the application when the user has selected the Lock Screen and Keys option from the list of profiles on pressing the phone's power button. - Bada: Going to sleep after a period of inactivity will now correctly stop audio from playing on wq devices. - Bada: Popup screen on wq devices now displays text in a consistent and readable colour. - android: Fix Accelerometer direction on landscape devices (SMB-A1011) - iOS: Added support for playing sound/audio when application is suspended or the screen is off, via new iphone-backgroundmode-audio=1 deployment option. On all devices, this will cause sound to continue to play when the screen is off/locked. On iOS4 devices that support multi-tasking, audio will also continue to play when the app is in the background. - iOS: Fixed issue where starting in 2xZoom mode on iPad resulted in S3E Pointer and Surface using full high-res iphone 4 screen area. - iOS: Disabled shake-to-undo for OSReadString to fix UI corruption issue. - iOS: Fixed issues with s3eBackgroundMusicPickMusicItems: Status bar/UI menu orientation is now always correct after closing the picker; fixed minor memory leaks. - iOS: Fixed issue where OSReadString dialog could rotate from landscape to portrait and break application orientation when returning to the app. - iOS: Stopped phantom rotation animation from playing when rotating from landscape to portrait. Fixes between v4.3.1 and v4.3.2 =============================== - Android: Support s3eDeviceUnYield on Android. Allow special characters (&><) in Application name. - Symbian: Added support for URLs of format "shell:;" to s3eOSExec. This allows another exe to be launched if you know the complete path of the executable, the parameter list and the application has the correct permissions to start it. - Symbian: Fixes s3eOSExec so that it will process URL strings that start with mailto: correctly. - iwutil: Support 16bit RGB565 BMPs from modern art packages. It seems the standard way of saving these now is using BI_BITFIELDS compression, which is now supported for 565 images. - iOS: Updated s3eBackgroundMusicPickMusicItems to allow the picker's position to be specified. This is required to pass App Store certification on iPad. - derbh: Derbhs mounted from sub-directories were intended to be accessed at that directory in the file system. The implementation only worked sporadically, so it has been removed and derbhs are now always mounted at the root irrespective of the derbh file's location. Fixes between v4.3.0 and v4.3.1 =============================== - Multiple platforms: s3eFileGetInt(S3E_FILE_ISDIR) wrong returned true for any raw:// path. This stdio file operations to fail on raw:// paths - bada: s3eCompassGet now returns correct azimuth. - Brew: Add new BREWRecreateBitmapOnRotate option for devices that perform it's own rotation and invalidates the current device's bitmap. - Symbian: Fixes conversions from Unicode to UTF8 for return string from s3eExtOSReadUserStringUTF8. - iOS: Fixed and issue where s3eAudio would resume playback when switching back to the application when it was previously paused. # vim: list:expandtab