This document describes the changes to the Corona SDK on Mac OS X and Windows, including the simulator, and iOS and Android device builds.
What’s New in This Release
- New, redesigned Corona Start Screen with buttons for new project templates, run apps in the simulator, analytics and more.
- Pro subscribers can now build for Amazon's Kindle Fire and Barnes & Noble's NOOK Color
- Nook and Kindle Fire simulator device skins (Pro only)
- Ad support for inneractive ad network (gives access to over 100 other ad networks)
- Demo app to demonstrate basic Corona tasks
- Storyboard API (for scene creation, management, and transitions)
- New project templates: App, Game, E-book, and Scene
- New Widget API
- Timer Pause/Resume
- display.newRetinaText
- display.newEmbossedText
- display.newText supports multiline text
- Editable native.newTextBox field
- Subdirectory support for Lua files
- Native UI components in simulator (Mac only)
- Fixed many bugs in all platforms
- Local Notifications for iOS
- Several core improvements
Please note the following:
- Not all Corona features are available on Android (see Known Issues below)
Changes to Android OS and architecture support
Starting with build 484, Android device builds you create with Corona will only run on devices that meet the following specifications:
- Android 2.2 or later installed
- ARM7 (or compatible) processor
If you try to install an APK on a device with an incompatible OS or architecture, you will encounter errors. The Android Market automatically filters out applications that have incompatible OS or architecture requirements, so end-users (your customers) will not encounter these types of errors.
New Features and bug fixes (common to Android, iOS, and Simulator)
- Ads: fixes casenum: 8439. Location no longer requested when banner ads are displayed.
- ALmixer: Continued work on iOS suspend/resume audio problem. Fundamental problem seems to be a race condition bug in Apple's OpenAL implementation related to changing the OpenAL context (filed rdar://10081775 mirrored on Open Radar at http://openradar.appspot.com/radar?id=1334407). This bug seems present in the Mac version as well. As a workaround, I have decoupled suspend/resume from begin/end-interruption events so they are no longer treated identically since the latter only needs to change the OpenAL context. Real iOS interruption events are still susceptible to this bug because the workaround does nothing to help this case. Users are encouraged to file duplicate bugs with Apple and refer to the aforementioned bug id to help boost the priority. Also, if you have more information that may help them, please include that in your bug reports. Other changes include a partial regression in ALmixer to restore some code that was simplified just in case it was related to the buffer id errors some people reported, added AL_SOURCE_STATE support to luaal, and fixed a table parameter bug in audio.resume and audio.pause so you pass table parameters for channel and source. Please continue to test. The work-around code extends deep in some places of the audio code and may affect all platforms.
- ALmixer: Performance Tuning: Based on feedback about stuttering problems with streaming, changed the buffer size parameters for audio.loadStream to bufferSize=8192, maxQueueBuffers=12, startupBuffers=4, buffersQueuedPerUpdate=2 from. bufferSize=4096, maxQueueBuffers=25, startupBuffers=8, buffersQueuedPerUpdate=4 As a side effect, users with a lot of simultaneous open loadStream handles (which is strongly discouraged) will notice that the limit will increase due to this change, but still less than the original number.
- ALmixer/iOS: Fixed regression bug on iOS for audio which prevented audio from playing when backgrounding/suspend and resume was enabled. Also added additional check to force audio to resume after resuming from an interruption event which might possibly fix some phone call interruption bugs.
- Audio/Core: Fix for audio.getMaxVolume and audio.getMinVolume. Wrong values were being returned due to an off-by-one error accessing the Lua stack.
- Build: Added NDK_DEBUG=1 to internal debug scripts.
- Build: Force build process to retry on compile failure due to OpenFeint/Xcode 4.2 nib crashing bug.
- ALmixer New optimizations to decouple update loop from number of buffers queued in audio streaming to allow more for more and smaller buffers to be processed in a loop. Also, an explicit internal pause call is invoked on application suspend and internal resume on app resume which should avoid stuttering/underrun problems on Android when the activity is suspended (e.g. app suspend, OpenFeint, etc) and also avoid other weird state corruption bugs in the Android audio system. Users: please test audio streaming to make sure there are no new or regression bugs because the optimizations are complicated and in the main audio update loop.
- Mac: Fix for display.save artifacts when writing files containing alpha.
- ALmixer/iOS Worked-around another Apple race condition bug with setting the audio session active on phone call hangup-before-answering where audio session would fail to reactivate and audio would subsequently not work. Workaround involves sleeping for 1 second before trying to resume audio on iOS. Also fixed boolean flipped logic bug in ALmixer_AreUpdatesSuspended().
- OpenAL/iOS Adding a 1 second sleep when resuming an audio interruption to workaround Apple bug rdar://10081775 race condition with setting the OpenAL context. This needs testing to verify it helps or hurts. Please test.
- Simulator: Fixed model name for iPhone 4 so it reads 'iPhone' instead of 'iPhone4' when running in simulator.
- ALmixer: Fixed bug with seeking channels with predecoded samples. The OpenAL 1.1 spec specifies that a playing source should automatically jump when already playing. The code was unnecessarily recalling alPlaySource again which is not necessarily the correct thing to do. I think the previous code is another remnant of the Open 1.0 era. Also fixed bugs in the return codes for seek and rewind. For single channels, the return code was 0 channels processed in ALmixer which resulted in returning false to Lua. The implementation now should return 1/true for single channels, but 0/false for no channels. Errors will return -1/false.
- ALmixer/iOS: Workaround attempt for terrible Apple OpenAL regression bug in iOS 5 dealing with streaming sources. Also includes resync with ALmixer mainline to try to fix 59TestingError messages/errors.
- iOS/ALmixer: Changes to iOS 5 audio workaround for Apple OpenAL regression bug. This fix will hopefully resolve lingering problems with switching between loadStream and loadSound when reusing the same channel. Please test to make sure no new problems were created with loadStream. This Apple bug is tricky to workaround.
- Mac gllayer branch: Fix for Mac video player not being destroyed on simulator relaunch.
- Fixed runtime warnings of __NSAutoreleaseNoPool(): Object 0x510770 of class NSPathStore2 autoreleased with no pool in place - just leaking.
- Core/Mac: Fixes for Mac web pop to handle unspecified view rectangle and added support for hasBackground property.
- Mac: Tweaked size of new progress indicator to be half the size as before.
- Mac: Waypoint: gllayer branch. Introduced nib based WindowController.
- Mac: Waypoint: gllayer branch. Trial mode fixes.
- Mac: Waypoint: gllayer branch. Window sizing tweaks, build system experiments.
- Fix for missing return value caught in Windows build.
- Fix for xStart and yStart for multitouch moved/ended events when using dynamic scaling.
- ALmixer/iOS 5: All iOS 5/OpenAL users should test this. This is one more workaround for the infamous iOS 5/OpenAL bug. The workaround committed in build 645, used a usleep(20) to workaround a race condition in Apple's framework. In casenum 9763, the test case was pounding the audio system really hard in physics post collision callbacks which were being called dozens if not hundreds of times per second. These were causing thread contention and would sometimes create a pause/stutter. The new workaround is to reduce the usleep to 0 to minimize wait. The side effect is that we are triggering more OpenAL internal errors in Apple's frameworks as we busy-wait for the race-condition to pass and we are sucking up more CPU doing this. The real solution is to get users to upgrade to iOS 5.1 or whenever Apple fixes the problem. Also, this fix contains a new version cap so the work-around will not be run on any post 5.0.x device. Please report your iOS 5.1 results to us to confirm things are working.
- Core: Fixed xStart/yStart regression bug for non-multitouch introduced by fixing casenum 9618 for multitouch. xStart/yStart should now return the correct values for both cases.
- iPad: Fix for iOS 5 where photo album picker was not being displayed on screen.
- Casenum: 10068 Widget API bug fixes and improvements to table view. Also added ability to remove widgets by removing their parent group.
- casenum: 4781. core/Mac/iOS/Android/Windows. Fixes for the media.getTunerVolume and media.getTunerFrequency. Note that frequency value on Android is still not correct but is stable for a specific frequency.
- Change to report lua_pcall errors on devices.
- Core: add ability to tint sprite objects via spriteObject:setFillColor()
- Core: adds display.newRetinaText and display.newEmbossedText to core (no need to require widget)
- Core: Bug fix to add Runtime Guard before calling PrepareToRender. Without the guard, multiple OpenGL contexts could fight and get things into bad states. This fixes the black welcome window on return from simulation some people have seen on Mac.
- Core: Changed Sprite GetFrameHeight and Width so it's base 0 instead of base 1.
- Core: Expanded scope of RuntimeGuard based on feedback of code review.
- Core: Fix for copy/paste mistake in custom build id order.
- Core: Fix to destructor order to prevent crashes during shutdown (trying to access LuaContext while it is being destroyed for lua_gc).
- Core: Fixed bug where display.save() will miscapture a display object by 1 pixel. casenum: 10123
- Core: Fixed display.save() on iOS and upside down screen captures. casenum: 928
- Core: Fixed display.save() where it may miscapture the object by 1 pixel.
- Core: Fixed logic bug in authentication check for Pro users.
- Core: fixes casenum: 2565 where setting physics property isBodyActive during collision listener caused crash.
- Core: Fixes casenum: 6249. hit test masking should work for concave masks
- Core: fixes casenum: 6962 (default bkgd color not working on device). Also add ability to tint images via image:setFillColor(). Finally, add ability to set gradient for rectangles and text objects using gradient objects as input to rect:setFillColor and text:setTextColor. Gradients can be created via graphics.newGradient( colorArrayStart, colorArrayEnd [, direction] ).
- Core: Modified display.captureScreen() to rescale displayed screenshot to fit the screen. Used to do display image beyond screen's bounds for high resolution devices.
- Core: Removed Rtt_ASSERT for openAL scheduler.
- Core/Ads: fixes casenum: 7567. Lua runtime exception should not be getting thrown by ads.init() if optional 3rd param wasn't supplied.
- Core/Mac: gllayer: Bug fix for display.save() where the prior FBO state was not being properly restored after offscreen rendering.
- Core/Mac: Introduced explicit versionCode and versionName fields for Android building. This is intended to fix problems/confusion/bugs with the old version field. build.settings will still override this field. Also made internal memory related cleanups/bug-fixes for Mac build dialog.
- Core/Mac: Multiple runtime instances bug fixes.
- Core/Mac/iOS: restores old behavior where bitmaps are autoscaled against longest edge of screen (or max texture size). Autoscaling is off (as usual) if fullresolution flag is passed to display.newImage()
- Core/Simulator: fixes casenum: 8787. Fixes syntax error reporting in simulator terminal
- display.newRetinaText: casenum: 8944, 9014, and 9613. Ensures reference point defaults to center referent point.
- Fix compile error
- Fix more compile errors
- Fix windows compile error
- Fixed Logon Error dialog box hidden by progress panel so progress panel occurs after Logon check. Added explicit test for 'logon error' (e.g. wrong password) returned by server. Changed default server error from 'Wrong Password' to 'Unknown server error.'
- Fixed stray character in file breaking compile.
- Fixed stray character in file breaking compile.
- Fixed the runtime error handler for lua_pcall in the no-error-function case because it was incorrectly setting a bad index of 'base' instead of 0. This fix was needed to report Lua runtime errors to the device log.
- Fixed the runtime error handler for lua_pcall in the no-error-function case because it was incorrectly setting a bad index of 'base' instead of 0. This fix was needed to report Lua runtime errors to the device log.
- Graphics: polylines that have angles less than 30 degrees will not have miter joints, but instead have bevel joints.
- LaunchPad: better detection of AdHoc vs Store builds on iOS
- Mac/Core/Android: Fixed validation/UI bug on Mac that prevented Android validation failure alert sheets from appearing and the progress/build sheet would never go away. Also lifted restrictions on Android file names for previously known as 'res' files. File names now may use Java keyword names and begin with numbers. Also, file names with the same base name but different extensions are allowed, e.g. (boom.mp3 and boom.wav may both exist, and you no longer have to do silly stuff like boom_mp3.mp3 and boom_wav.wav).
- Mac/iOS: Added validation test to iOS Application Names in the build window to prevent the server build process from hanging when using non-alphanumeric ASCII characters. To display fancy characters in your app name, use CFBundleDisplayName in build.settings in the plist section.
- Mac/iOS: Bug fix to make plist settings in build.settings more robust and handle the case where the plist was an empty table.
- Mac/Win/iOS/Android: Add subdirectory support for Lua files. Limitations: Lua files cannot have a '.' except as part of the '.lua' extension. Android files still cannot have resource files in subdirectories
- Mac/Win/iOS/Android: Add subdirectory support for Lua files. Limitations: Lua files cannot have a '.' except as part of the '.lua' extension. Android files still cannot have resource files in subdirectories
- Merging gllayer branch with mainline.
- NOTE: Windows MSI is missing certain device skins, so wait for next daily build
- only do a clean before a 'release' build not a customID build
- only do a clean before a 'release' build not a customID buildChange to report lua_pcall errors on devices.
- OpenFeint/iOS: remove OF's use of undocumented iOS API's per http://support.openfeint.com/dev/updatebadge/
- Physics: fixed joint issue introduced in build 621 where calls to joint:removeSelf() stopped working.
- Physics: fixes casenum: 1703. Crash on physics.newJoint when display objects did not have physics bodies. Also fixed crash when calls to physics API were made prior to physics.start().
- Physics: fixes casenum: 8291. distance joint properties 'length' 'frequency', and 'dampingRatio' were not getting set properly.
- Physics: fixes crash when debug/hybrid drawing mode is on and joints are present.
- Physics: fixes crashes during collision listeners. Box2D forbids modifying the world while doing its calculations, so we forbid them too. Instead various functions return true/false on success/failure: physics.stop(), physics.addBody(), physics.removeBody(). physics.newJoint() returns nil during a collision event. This fixes casenum: 4953, casenum: 1617, casenum: 2493, casenum: 6521, casenum: 7298, casenum: 6584
- Physics: fixes crashes during collision listeners. Box2D forbids modifying the world while doing its calculations, so we forbid them too. Instead various functions return true/false on success/failure: physics.stop(), physics.addBody(), physics.removeBody(). physics.newJoint() returns nil during a collision event. This fixes casenum: 4953, casenum: 1617, casenum: 2493, casenum: 6521, casenum: 7298, casenum: 6584
- Physics: fixes groupIndex. Previously supplying a 'filter' table with only the groupIndex resulted in maskBits and categoryBits being set to 0. This caused the objects to not collide with any object, even those without the groupIndex set.
- Physics: Joints should return nil for unknown properties. Fixes debug drawing of most joint types (except mouse, pulley, distance) when the stage is moved. Fixes certain internal pixel-to-meter unit conversion errors on distance joints('length'), piston joints ('motorSpeed', 'jointTranslation'), line joint( 'jointTranslation'), pulley joint ('length1', 'length2')
- Physics: missed a corner case to fix the 'filter' argument in previous checkin
- Physics: MKS fix.
- Repo: File keeps getting marked as changed even though it isn't. Trying to 'fix
- Simulator: Improve Ebook template
- Storyboard: add new/modify templates based on new storyboard library
- Storyboard: Fix bunch of storyboard bugs
- Storyboard: Fixed a bug where FIRST scene transition (called from main.lua) would not work if user specified an effect. Users should be able to specify an effect and effectTime even on the very first scene transition.
- Storyboard: fixes bugs related to distortions during screen transition when a scene is partially outside the screen bounds and a bug on removeScene(), so the module is completely unloaded.
- Storyboard/Widget: remove activity indicator param from storyboard.gotoScene(). Widget fix issues including casenums: 9347, 9367, 9372, 9387, 9584. Also nasty memory leak and bug when removing button in listener called at onRelease/ended phase.
- This is a duplicate of changes in 2011.618 which contained the following changes:
- Timer: add timer.resume(timerId) and timer.pause(timerId). Also timer.cancel() returns 2 results (time left before firing) and (number of iterations left)
- Timer: add timer.resume(timerId) and timer.pause(timerId). Also timer.cancel() returns 2 results (time left before firing) and (number of iterations left)
- timer: casenum: 7745 (7584 9692 8852). Fixes bug in timer.pause where if only one timer remained, then timer.resume would fail. Also timer.cancel() wasn't accounting for paused timers when returning the time left. timer.pause() now returns the time remaining per the API documentation.
- Update assets used by homescreen
- Widget: casenum: 7281, casenum: 6944, casenum 6911, and bunch of other fixes (Widget Library v0.1.7).
- Widget: fixes for left/rightSwipe, touches leaking through tabBar button, minor tableView issue.
- Widget: fixes various bugs
- Widget: updated API to version 0.2. Adds newTabBar and various bug fixes. See widget API docs for more info developer.anscamobile.com/resources/apis
- Widget/Homescreen: bug fixes. updates to templates.
- Windows/Mac: Fixed font errors logged on Windows in Welcome screen. Fixed demos project to not stretch and letterbox itself instead on Windows.
iOS Features and Fixes
- Build/iOS: Changed build script iOS SDK target to 5.0 to accommodate building with Xcode 4.2 on Lion.
- Build/iOS: Last change to explicit armv6 armv7 breaks Xcode Simulator (i386). Resorting to cleverness and using $(VALID_ARCHS) instead.
- Build/iOS: OpenFeint compile fixes for Xcode 4.2.
- Build/iOS: Removed default use of $(ARCHS_STANDARD_32_BIT) because Xcode 4.2 only defines it as armv7 and drops armv6. Adding back armv6 plus $ARCHS_STANDARD_32_BIT causes the Xcode 3 based automated on-device tests to fail because it gets confused by duplicate armv6 entries when $ARCHS_STANDARD_32_BIT expands to both armv6 and armv7.
- Build/iOS: Touching/updating more OpenFeint nib files to newer version of IB; trying to avoid Xcode crashes during automated tests.
- Build/iOS: Touching/updating OpenFeint nib file to newer version of IB; trying to avoid Xcode crashes during automated tests.
- Build/iOS: Typo in last build change.
- iOS: Add isEditable property to text boxes (native.newTextBox) to support multiline input text
- iOS: adds system.CachesDirectory
- iOS: ads.init() now takes an optional 3rd listener argument. It will send an 'adsRequest' event. It contains the 'provider' property and 'isError' property which is true if the ad request failed; false otherwise. Currently, iOS-only.
- iOS: Enable 'Build for Amazon/Kindle'. Use this to build for the Amazon App Store.
- iOS: feature work
- iOS: fix bug/new feature
- iOS: fix crash in new feature
- iOS: Fix memory leak in native text events.
- iOS: Fixed small memory leak in image capture code.
- iOS: Fixes for iOS 5 problem where camera picker controller would not dismiss. New code should work for all iOS versions.
- iOS: fixes system.cancelNotification() and also delivery of Local notifications to inactive apps that resume via fast-app switching (Note: you must have UIApplicationExitsOnSuspend set to false in your build.settings/Info.plist or else you will not receive the notification after fast-app switching)
- iOS: Refactored In-App purchase code.
- iOS: removes default gloss treatment on app icons. To bring back, set 'UIPrerenderedIcon' to false in iOS-specific section in build.settings
- iOS/Ads: Passing in nil in ads.init() defaults to using a test app id by default.
- iOS/Ads: Update to InMobi SDK 3.0. Fixes crasher related to hiding before ad request completes. Also fix problems with iOS 3.x on previous feature work checkin.
- iOS/Ads: Update to InMobi SDK i300 (Build 3.0.2). Fixes issue where geo-data permission popup came up even if geo-data was not used.
- iOS/Android: Modified ads.init() function to display a warning dialog if the given app ID was nil or an empty string.
- iOS/Core: Adds native.setProperty( key,value) and native.getProperty( key). Keys are platform-specific. Valid iOS keys include: 'applicationIconBadgeNumber', 'applicationSupportsShakeToEdit', 'networkActivityIndicatorVisible'.
- iOS/Mac: Fixed bug where display.newImage() for images larger than 2048 pixels wide/high would not be displayed.
- iOS/Mac: for multiline text, display.newText() now supports variable height, the width must be supplied and height must be 0.
- iOS/Mac: multiline text and support for newline character in display.newText( string, x, y, [w, h,] font, size ). You must supply the optional w,h params to enable multiline behavior; otherwise it reverts to single line. The w,h define the box in which the text is rendered.
- iPhone/iPod: Workaround for Apple iOS 5.0 bug where hidden status bars reappear after returning from the photo/camera picker.
Android Features and Fixes
- Android: Added 'isEditable' property to text boxes (native.newTextBox) to support multiline input text.
- Android: Added 'versionName' string support to the build.settings file. casenum: 4837, 8607
- Android: Added ability to prevent web popup from being closed with back button via native.showWebPopup('www.mysite.com', {autoCancel=false}. casenum: 8330
- Android: Added banner dimensions 'banner728x90', 'banner468x60', 'banner120x600'.
- Android: Added camera button and OK button support to Corona's camera view. These buttons now take a picture. casenum: 8447
- Android: Added display.newText() multiline support.
- Android: Added display.setStatusBar() support.
- Android: Added Google Maps library. Does not support maps feature yet, but it fixes Amazon submission issue. casenum: 7274
- Android: Added low 'memoryWarning' event support.
- Android: Added Lua listener to ads feature. Detects if ad requests succeed or fail. casenum: 7422
- Android: Added media.show() camera and photo library support. casenum: 361, 7916
- Android: Added native.setActivityIndicator() support.
- Android: Added new AndroidManifest.xml customization features to the build.settings file. To be documented and announced later.
- Android: Added new function 'native.requestExit()' to gracefully close the app (not supported on iOS). This function should be used instead of os.exit(), which does a force quit.
- Android: Added Nook and KindleFire support to build scripts.
- Android: Added orientation event support for fixed orientation apps (see 'Fishies' sample app for an example). Also added landscapeLeft and portraitUpsideDown support.
- Android: Added storyboard.cpp to the source control ignore list.
- Android: Added subdirectory support for asset files. (Note: Works for all Corona APIs such as 'audio', but not all file types work with Lua file 'io' calls such as image files and HTML.)
- Android: Added support for RTSP (Real-Time Streaming Protocol) to media.playVideo(). casenum: 8847
- Android: Added support for system.setLocationThreshold(). Changed default from 1 meter to 0 meters so that GPS data can be continuously received while not moving.
- Android: Changed media.playVideo() to not slide in the video player. Now just immediately displays the video. Better matches iOS.
- Android: Changed system.getTimer() to not be affected by clock changes and fixed its suspend/resume handling. casenum: 7924, 7942
- Android: Code cleanup in image saving code.
- Android: Fixed 'display.statusBarHeight' to return the correct height of the top status bar on Kindle Fire.
- Android: Fixed all JNI Warnings. Fixes crash if device has 'CheckJNI' enabled. Prevents Amazon rejection. (Bug introduced in build #678)
- Android: Fixed Ansca side local build scripts to support today's versionCode and versionName changes.
- Android: Fixed bug caused by daily build 635 where fixed orientation app's screen gets squished when returning from another screen (such as screenlock) at a different orientation. casenum: 8751
- Android: Fixed bug where 'search' button would close the activity indicator. casenum: 8410
- Android: Fixed bug where 'submitted' events were not being raised by TextFields. casenum: 6849
- Android: Fixed bug where a read-only TextBox is editable by a Droid2. casenum: 8602
- Android: Fixed bug where accelerometer, gyroscope, and heading/compass yield wrong values on landscape tablets. casenum: 8260
- Android: Fixed bug where app will state it is corrupted if initializing the Papaya game network with a nil App ID. casenum: 7276
- Android: Fixed bug where app will state it is corrupted if initializing the Papaya game network with a nil App ID. casenum: 7276
- Android: Fixed bug where app would not suspend when power button was pressed (broke in build 615). Fixed OpenGL errors that sometimes occurred in suspend/resume Lua listeners.
- Android: Fixed bug where device's volume control buttons do not change the volume as of build 612. casenum: 7946
- Android: Fixed bug where images are not rotated from files having an EXIF orientation setting. casenum: 8236
- Android: Fixed bug where native WebPopup listener does not get invoked for JavaScript URL redirects. casenum: 7278
- Android: Fixed bug where native WebPopup listener does not get invoked for JavaScript URL redirects. casenum: 7278
- Android: Fixed bug where old asset files (audio, text, etc.) are not overwritten when upgrading an app on a device. casenum: 8830
- Android: Fixed bug where opening/closing the physical keyboard restarts the app if it has a fixed orientation. casenum: 8445
- Android: Fixed bug where pressing back button while an alert box is shown prevents future alert boxes from being shown. casenum: 8252
- Android: Fixed bug where screen can go black when calling display functions in the Lua key event listener. casenum: 7496
- Android: Fixed bug where screen goes black when returning to app via Task Manager. casenum: 7761
- Android: Fixed bug where screen is shifted down when returning from screen lock or an activity that has a statusbar. casenum: 8514
- Android: Fixed bug where TextField focus would move to another field when clearing the keyboard. casenum: 7633
- Android: Fixed bug where the location event Lua listener provided a negative value for 'event.time'. casenum: 8673
- Android: Fixed bug where you could not tap behind InMobi ad banner when no banner is shown. casenum: 7821
- Android: Fixed bug with 'system.orientation' where it was only providing the launch orientation. Now provides current orientation. casenum: 8912
- Android: Fixed camera crasher related to last change.
- Android: Fixed compiler error.
- Android: Fixed Corona to not resume from a suspended state at the screen-lock window.
- Android: Fixed crash caused by calling media.show(media.Camera) if the camera permission was not set or if the device does not have a camera. Now displays an alert messages in these cases. casenum: 8351, 10072
- Android: Fixed crash caused by destroying a text field while it has the focus. casenum: 7352
- Android: Fixed crash caused by destroying a text field while it has the focus. casenum: 7352
- Android: Fixed crash caused by exiting the app while media.playSound() just finishes playing its sound. casenum: 8540
- Android: Fixed crash caused by quickly backing out of an app just as it starts up. casenum: 7243
- Android: Fixed crash that sometimes happens when you exit the app while a WEB popup is loading a new page. casenum: 8473
- Android: Fixed display.captureScreen(true) to not overwrite the last saved file in the photo library. casenum: 7672
- Android: Fixed display.newImage() to support 2048x2048 images again (broke in daily build 622). Improved image color quality from 16-bit to 32-bit if device has enough memory to support it. casenum: 8576
- Android: Fixed display.statusBarHeight to return the correct pixel height on Android. Returns zero for Android 3.x devices because they don't have a statusbar at the top of the screen.
- Android: Fixed location event handler to not crash if the device does not have a GPS, such as a Kindle Fire. No longer crashes if you forget to set permissions; displays a native alert instead. Now supports fetching location data from WIFI/Cellular network if ACCESS_COARSE_LOCATION permission is set, but favors GPS data if available. Location data now retrieved faster. casenum: 10193
- Android: Fixed media.playVideo() to always support orientation changes to better match iOS. No longer locks orientation to app's orientation setting. Video no longer restarts when changing orientation.
- Android: Fixed media.playVideo() to support hiding the video controls.
- Android: Fixed multitouch crash caused by using more than 2 fingers on Android 3.x. casenum: 7701
- Android: Fixed multitouch crash caused by using more than 2 fingers on Android 3.x. casenum: 7701
- Android: Fixed network.download() to not crash when downloading files larger than 24 MB. Fixed network.request() and network.download() to not block the UI thread. casenum: 8353, 8413
- Android: Fixed out-of-memory crash caused by loading too many images. casenum: 1298
- Android: Fixed random crash caused by exiting out of an app that listens to heading/compass data. casenum: 8432
- Android: Fixed resource leaks in JNI bridge that could cause a crash.
- Android: Fixed web popup where it was preventing the back key from exiting the app. Caused by build 625.
- Android: Got rid of harmless 'can't open ' log messages caused by loading asset files.
- Android: Increased renderer's color depth from 16-bit to 32-bit. Improves color quality and fixes color banding/striping issues with gradients. casenum: 8778
- Android: Made an update to today's 'build.settings' changes.
- Android: Made READ_PHONE_STATE permission optional. Allows the app to show up on the market place on tablet devices. Should allow table-only apps to pass Amazon Market Place submissions. casenum 8749
- Android: Maintenance
- Android: Maintenance.
- Android: Modified InMobi to automatically use a test app ID when calling ads.init('inmobi', nil).
- Android: Modified media.playVideo() to use the same orientation settings as the app. (Example: If app is locked to landscape, then video player locks to landscape.)
- Android: Modified to automatically downscale loaded images that exceed OpenGL/Android memory limitations. Needed to load images from Photo Library and Camera. casenum: 8237
- Android: Screen goes black and does not recover when calling media.playVideo() with an invalid URL or if the URL cannot be reached. casenum: 9200
- Android: Started working on Kindle Fire support. (Not finished yet.)
- Android: Temporarily removed maps library from APK for Amazon submission testing. (Maps API was not supported anyways, but planning on it in the near future.)
- Android/iOS/Mac: Fixed issue where downsampled images that exceeded OpenGL's texture size limit were displayed smaller than the original file. The display object is now scaled up to the image file's original size. casenum: 8576
- Android/Windows: Fixed bug where display.newImage() does not automatically letterbox images that exceed screen's bounds like it does on iOS/Mac. casenum: 8238
- Android/Windows: Fixed bug where images were being auto-downscaled too small. (See Fishies app for an example.) casenum: 8663
Simulator Features and Fixes
- Mac: Add KindleFire skin
- Mac: Add new welcome screen/demo.
- Mac: Add Nook skin and access to Nook builds. This is alpha quality. Use at your own risk.
- Mac: add validation on w,h of newProject form. also homescreen now closes like the old welcome screen.
- Mac: Added new URL handler command 'relaunch' to help speed up internal testing, e.g. corona://relaunch?skin=iPhone
- Mac: Added OpenGL requirement check at launch which will prevent running if the requirements are not met. Marginal video cards will now only print to the console at launch instead of with every simulator relaunch.
- Mac: Build: Again. The libreadline problem resurfaced. (Radar: 10157076). This time I invoke install_name_tool to rewrite the link path in the binary. Yuck!
- Mac: Build: Changed link to libreadline.dylib to libedit.2.dylib for backwards compatibility. libreadline.dylib is symlinked to libedit.3.dylib on Lion which causes deployment problems on Snow Leopard because the explicit version in the real file name is what is linked to. Snow Leopard only has libedit.2.dylib which prevents launches.
- Mac: Build: The last fix for libreadline didn't take, so I bypassed the Xcode linking phase and added -ledit to the linker flags.
- Mac: Changes to get native display objects to size correctly with content scaling.
- Mac: Enabled opacity on gllayer to avoid blending surprises with the view behind the gllayer.
- Mac: Enforce policy that only subscribers can launch daily builds.
- Mac: Expanded iOS App Name validation rules to allow '-' to not break existing sample code (e.g. X-ray).
- Mac: fix default e-book content size to be tablet.
- Mac: Fix inconsistent messaging for indie subscribers in dialog.
- Mac: Fix to animate progress bars.
- Mac: fix verification of purchase for trial users. improve messaging in UI dialogs.
- Mac: Fixed window-size-off-by-titlebar-height bug for demo window.
- Mac: Fixed/Changed menu enabled/disabled bindings for Show Project...
- Mac: Fixed/Changed menu enabled/disabled bindings for Show Project...
- Mac: fixes newproject functionality of homescreen
- Mac: fixes simulator not working on previous daily build
- Mac: Fixes to open/skin popup. Tweaks to Preferences nib. Added version number to welcome window title bar for convenience.
- Mac: gllayer branch: Temporarily disabled allocator fetching via AppDelegate in MacImageProvider.
- Mac: gllayer branch. Build system changes. Fixes/changes to window behavior to better support multiple screens. Also, each different skin window now gets its own Cocoa save information so returning to a skin will try to restore the former position (leveraging built-in Cocoa functionality). This might not be immediately obvious when changing skins because the new skin will appear in the previously used position of the new skin instead of the position of the skin you just switched from, but this avoids a bunch of problems with trying to micromanage the windows ourselves which is a problem for multiple displays dynamically being plugged in and disconnected when running. Also, removed the positioning restrictions for the top menu bar on window move based on user feedback.
- Mac: gllayer branch. Fix for avoiding crashes when in middle of editing text field and deleting it.
- Mac: gllayer: Fix to make Mac native display objects setReferncePoint to center by default instead of top left.
- Mac: gllayer: Partial fallback for crappy video cards/drivers. Some cards are reporting they support GL_EXT_framebuffer_blit but they are not rendering correctly. The common denominator seems to be if the card only supports GL_EXT_framebuffer_object but not GL_ARB_framebuffer_object. So in this case, we will avoid glBlitFramebuffer and provide a fallback rendering case. Video cards still must support framebuffer_object. (If your video card doesn't support this, it is less capable than the original iPhone which makes it hard to support.) Please note that headless Macs are still not supported due to other Apple bugs.
- Mac: gllayer: Partial workaround for headless Mac crashing bug on Snow Leopard. Workaround will try to create a fallback OpenGL pixel format if it fails to create. (Lion does not hit this case.) Unfortunately in either case, there seems to be an Apple rendering bug with CAOpenGLLayer and headless Macs so you will only get a black screen. Please plug in a display. File a bug report with Apple (https://bugreport.apple.com) if you want this fixed. Refer to radar://10388102 in your Apple bug report.
- Mac: Increased internal iOS SDK version to 5.0.
- Mac: Internal build/debug changes.
- Mac: Merging gllayer branch with mainline.
- Mac: More code clean up for gllayer branch. Fixed content scaling problem with native display objects when no scale mode is defined in config.lua. Fixes to CAOpenGLLayer to better handle multiple displays. Fixes to video player for content scaling.
- Mac: project
- Mac: re-enabled code that shows the window name in the menu.
- Mac: Relaxed restriction that an Apple iPhone Provisioning Profile is required to build for the Xcode Simulator. Having a provisioning profile is now optional for the Xcode Simulator so those who have not paid for Apple's iOS Dev program ($99), can now test building for the Xcode Simulator. (Using a provisioning profile is still recommended for those that have it as the Info.plist can be filled out more correctly.) Also for the Xcode Simulator (only), we now bypass running copypng which will skip Apple's iOS png mutilation/device-optimization process and may improve build times, particularly for apps with lots of pngs.
- Mac: Remove myTouch skin and replace with HTC Sensation (540x960) device.
- Mac: Resync gllayer with Mac new welcome screen branch again.
- Mac: Updated copyright year in plist.
- Mac: Waypoint commit for OpenGL backend.
- Mac: Waypoint tweaks to basic window setup.
- Mac: Waypoint: Added account info to Preferences window to help support issues. Fixed clean up bug with closing demo window when hitting the red button vs. menu close.
- Mac: Waypoint: Added OpenGL diagnostic info to CAOpenGLLayer looking for video cards that don't support GL_ARB_framebuffer_object and GL_EXT_framebuffer_blit.
- Mac: Waypoint: Bug fix for galaxy tab skin. Refactored code to reduce duplication. Changed Zoom-in option to use CMD-+ instead of CMD-= to be more consistent with other Cocoa apps. Users using the += key won't notice a difference as this key binding doesn't care about the shift key.
- Mac: Waypoint: Bug fix to force explicit window closing on relaunch.
- Mac: Waypoint: Bug fixes/polish items. Added new menu items including New Project and Show Project Files. Fixed ... to use real ellipses per Apple HI guidelines. Checkmark now added to current selected skin. User preferences now records and restores last selected skin. Fixed Open Samples panel bug in Lion so files will actually display and update. Fixed Mac native activity indicator so it will re-layout on zoom and rotation.
- Mac: Waypoint: CAOpenGLLayer: Some fixes and improvements for landscape rotation/resizing. Initial separation of back buffer, render buffer, and layer size. Fixes to prevent garbage display on first render and reorientation.
- Mac: Waypoint: Changes for CAOpenGLLayer; changes to avoid FBO=0. IKPictureTaker support plus MacImageProvider support to help deal with NSImage for IKPictureTaker. MacVidoePlayer additions.
- Mac: Waypoint: Changes to CAOpenGLLayer to use shared contexts to get around initialization order issue. Additional changes in setup order to also get working in Snow Leopard.
- Mac: Waypoint: Changes/enhancements to Welcome window and menu system. Welcome window is now manually closable and has a menu option to retrieve it. Preference to not automatically reopen welcome window is now respected. New preference has been added to not automatically close window. New option to Show Project Files (reveal folder in Finder). Close (cmd-w) now goes through standard responder chain and will close frontmost window instead of only working with the simulator window. Experimental fullscreen option (Lion-only).
- Mac: Waypoint: Compiler fixes for building against 10.6 SDK instead of 10.7. Other minor warning cleanups.
- Mac: Waypoint: Content scaling working for TextFields and TextViews.
- Mac: Waypoint: Content scaling working for WebPopUp.
- Mac: Waypoint: Deleted unused/dead code from textfield simplification.
- Mac: Waypoint: Finished implementation for native widgets and Lua bindings. TextFields and TextViews should respond to all the text callbacks with one exception for Secure TextFields where you can not get editing (character changes) callbacks because of Apple's security implementation safe guards. Also note that submitted and ended events are tied to the same event since there is no dismiss keyboard in Mac. This behavior may change in the future. Keyboard input types are currently unsupported. Video player is fullscreen. A video must end playing in order for it to close. WebView is accessible, but Apple does not officially support Core Animation layer backed WebViews. They may have rendering glitches or even crashes. Messages like 'unlockFocus called too many time' and 'Assertion failed: (s->stack->next != NULL), function CGGStackRestore, file Context/CGGStack.c, line 116.' are Apple bugs which Apple must fix. If you want to use WebViews in Mac, file bug reports with Apple telling them you want them to finish fixing their implementation and official support layer backed WebViews.
- Mac: Waypoint: Fix for missing return value.
- Mac: Waypoint: Fix to Open Accessory to not initialize with checkmark on iPhone.
- Mac: Waypoint: Fixed Textfield began notification and removed workaround.
- Mac: Waypoint: Fixes for compiling and running on Snow Leopard.
- Mac: Waypoint: gllayer branch refactoring/splitting code.
- Mac: Waypoint: gllayer branch. Deleted old ActivityIndicator implementation.
- Mac: Waypoint: gllayer branch. Disabled code that was causing window size to come out wrong.
- Mac: Waypoint: gllayer branch. Integrated new Core Animation based ActivityIndicator implementation to look more like iOS.
- Mac: Waypoint: gllayer: Memory leak sweep via static analysis.
- Mac: Waypoint: gllayer: Minor code refactor.
- Mac: Waypoint: gllayer: New Welcome Window remembers last position instead of always recentering on main display.
- Mac: Waypoint: gllayer: Resurrected welcome window fade code and applied to new Corona based welcome window. Also destroy Corona welcome window on close instead of merely hiding it so resources are not consumed unnecessarily.
- Mac: Waypoint: Internal redesign of Mac/OpenGL rendering surfaces to move to CAOpenGLLayer. Initial groundwork for some native display objects. Rendering timer is broken; it runs too fast.
- Mac: Waypoint: Massive side-quest rewrite of Mac content scaling and rotation system because non-trivial views (i.e. native display objects) do not work correctly with scaleUnitSquareToSize which the old implementation was based upon. The new system is based on IKImageView, Core Animation, hand-crafted math, and lots of ugly areas; heavy testing should be applied to make sure bugs were not introduced. As an untended side-effect of the new technology backing, implicit animations for scaling and rotation were introduced, though window clipping on the edges during transitions is currently a known issue. To deal with some of the ugly areas with resizing, explicit OpenGL back buffer internal APIs were introduced which may benefit performance. Mouse coordinate system needs to be fixed next. Then back to the original quest of fixing native display objects for so it can co-exist with content scaling.
- Mac: Waypoint: More CAOpenGLLayer reorganization.
- Mac: Waypoint: More CAOpenGLLayer reorganization.
- Mac: Waypoint: More changes for CAOpenGLLayer for separating canDraw and drawIn render stages.
- Mac: Waypoint: More nib tweaks to open accessory.
- Mac: Waypoint: Mouse coordinate modifications to accompany rewrite of Mac content scaling changes. Status bar now works with content scaling. Moving the window in the invisible corners now grabs the windows (literally a corner-case). Special code added for first launch to prevent window from being placed very far offscreen.
- Mac: Waypoint: Needed to add MacVideoPlayer files.
- Mac: Waypoint: Nib file didn't seem to commit
- Mac: Waypoint: OpenGL View now acceptsFirstResponder so clicking out of a single native display object (e.g. textfield) has a place to go to move away from the object. Other clean ups to OpenGL View code and CAOpenGLLayer.
- Mac: Waypoint: Optimizations to short-circuit redundant setBounds calls to CAOpenGLLayer.
- Mac: Waypoint: Partial refactoring of new Welcome Window. Welcome window now remembers last position. Introduced Core Animation based shake code for simulator shake.
- Mac: Waypoint: Partial regression on optimizations for render storage resize because it was causing errors on Snow Leopard.
- Mac: Waypoint: Reorganized Mac CAOpenGLLayer render update system to co-operate better with core event loop. Reverted code changes that bypassed the main timer loop. System is now heavily dependent on glBlitFramebuffer() which may (or may not) be an issue for crappy video cards. Testing is needed.
- Mac: Waypoint: Set native objects to hidden while scaling/rotating. Reduced WebPopUp rotate/scale update timer delay.
- Mac: Waypoint: Simplified TextField implementation for editing callbacks. SecureTextFields now work with the editing callbacks.
- Mac: Waypoint: Skinless Demo window.
- Mac: Waypoint: TextBox and TextField fixes to avoid crashes on deleting objects while in the middle of editing. TextField fix/hack workaround to deal with began delegate callback not firing due to field handler.
- Mac: Waypoint: Tweaks to mainmenu.nib
- Mac: Waypoint: Xcode fix.
- Mac/Build: Changed log function to fix compile problem.
- Mac/Core: Waypoint: Enhanced Open Project panel to pre-select user's last selected string as the default.
- Windows: Added 'Build for Amazon/Kindle' menu option.
- Windows: Added 'New Project' window.
- Windows: Added 'Nook Color' device skin and 'Build for Nook' option to the menu. (This is alpha quality. Use it at your own risk.)
- Windows: Added 'Version Name' field to the Android Build window. (Note: The versionCode and versionName settings in the build.settings file override the settings in the build window.) casenum: 8389
- Windows: Added a description to the Build window's 'Browse For Folder' dialog.
- Windows: Added an awesome new Sample App Selection window. Accessible from Welcome screen and Help menu.
- Windows: Added device skins 'Kindle Fire' and 'HTC Sensation'. Removed 'HTC MyTouch'.
- Windows: Added menu item 'File\Show Project Files' which displays the root project folder in Windows Explorer.
- Windows: Added multiline support to the display.newText() function. casenum: 8661
- Windows: Added new 'Welcome' and 'Demo' screens (work-in-progress). Added new menu options (not all working yet). Fixed screen flicker when starting projects.
- Windows: Added new files to WidgetDemo sample app.
- Windows: Added new sample app 'Interface\Storyboard'.
- Windows: Disabled console output when the home screen or demo screen is displayed.
- Windows: Disabled the Close and Maximize buttons on the 'Corona Simulator Output' console window.
- Windows: Enforce policy that only subscribers can launch daily builds.
- Windows: Enforce policy that only subscribers can launch daily builds.
- Windows: Fixed bug where 'File\New Project' menu item's hot key CTRL+N did not work.
- Windows: Fixed builds to not use JDK 7, which signs Android apps incorrectly. Requires 32-bit JDK 6. casenum: 7305
- Windows: Fixed compiler error.
- Windows: Fixed install program to include missing Droid, myTouch, and NexusOne skins. Was only a bug in build 600.
- Windows: Fixed simulator to zoom in/out when pressing 'Control +/-' with the numeric keypad. Was only supporting +/- keys on main keypad before. casenum: 10153
- Windows: Increased File menu's 'Most Recent Files' list from 4 to 8 files.
- Windows: Made the 'Demos' screen larger, skinless, and now uses same menu as Welcome screen. Fixed title bar to not show '- Corona Simulator' when displaying the Welcome screen. Fixed simulator analytics tracking caused by new welcome screen changes.
- Windows: Modified 'Open in Editor' menu item to open the 'main.lua' in notepad if a file association was not found. Windows XP was already doing this, but not on Windows 7. casenum: 9976
- Windows: Modified 'Preferences' window to prevent analytics from being disabled for trial/expired users.
- Windows: Modified Android build to accept project file names using Java keywords, file names that differ only by extension, and file names starting with a number.
- Windows: Modified install program to include changes in 'Ads\InMobi' sample app and 'New Project' templates.
- Windows: Modified install program to include new 'storyboard' template and other welcome window changes.
- Windows: Renamed console window from 'Corona Simulator.exe' to 'Corona Simulator Output'. Makes the purpose of that window clearer.
- Windows: Updated 'Interface\WidgetDemo' sample app to be compatible with the newest Corona SDK.
- Windows: Updated 'New Project' template 'eBook'.
- Windows: Updated install program to include changes in NativeDisplayObjects, StreamingVideo, Twitter, and WebOverlay sample apps.
- Windows: Updated install program to include new Welcome Window changes.
- Windows: Updated install program to include pause/resume changes in sample app 'GettingStarted\Timer'.
- Windows: Updated to include new sample app 'Media\PhotoPicker'.
- Windows: Updated trial nag windows and build progress window to match the Mac Simulator.
- Windows: Updated Twitter icon in the sample app selection window.
Known Issues
- Storyboard API: slight delay between scene changes on older devices.
- WebView (not fully supported by Apple/milage may vary: file Apple bug reports)
- Native Mac video player does not suspend when the simulator is suspended
- xReference, yReference for native display objects on Mac simulator do not return values that match the other platforms
- Rotated text with anti-aliasing enabled may not work