| @@ -1,46 +1,43 @@ | |||||
| JUCE breaking changes | JUCE breaking changes | ||||
| ===================== | |||||
| ===================== | |||||
| Develop | Develop | ||||
| ======= | ======= | ||||
| Change | Change | ||||
| ------ | ------ | ||||
| InAppPurchases class is now a JUCE Singleton. This means that you need | |||||
| to get an instance via InAppPurchases::getInstance(), instead of storing a | |||||
| InAppPurchases object yourself. | |||||
| InAppPurchases class is now a JUCE Singleton. This means that you need | |||||
| to get an instance via InAppPurchases::getInstance(), instead of storing a | |||||
| InAppPurchases object yourself. | |||||
| Possible Issues | Possible Issues | ||||
| --------------- | --------------- | ||||
| Any code using InAppPurchases needs to be updated to retrieve a singleton pointer | |||||
| to InAppPurchases. | |||||
| Any code using InAppPurchases needs to be updated to retrieve a singleton pointer | |||||
| to InAppPurchases. | |||||
| Workaround | Workaround | ||||
| ---------- | |||||
| Instead of holding a InAppPurchase member yourself, you should get an instance | |||||
| via InAppPurchases::getInstance(), e.g. | |||||
| instead of: | |||||
| InAppPurchases iap; | |||||
| iap.purchaseProduct (…); | |||||
| call: | |||||
| ---------- | |||||
| Instead of holding a InAppPurchase member yourself, you should get an instance | |||||
| via InAppPurchases::getInstance(), e.g. | |||||
| instead of: | |||||
| InAppPurchases iap; | |||||
| iap.purchaseProduct (…); | |||||
| call: | |||||
| InAppPurchases::getInstance()->purchaseProduct (…); | InAppPurchases::getInstance()->purchaseProduct (…); | ||||
| Rationale | Rationale | ||||
| --------- | |||||
| This change was required to fix an issue on Android where on failed transaction | |||||
| --------- | |||||
| This change was required to fix an issue on Android where on failed transaction | |||||
| a listener would not get called. | a listener would not get called. | ||||
| Develop | |||||
| ======= | |||||
| Change | Change | ||||
| ------ | ------ | ||||
| JUCE's MPE classes have been updated to reflect the official specification | JUCE's MPE classes have been updated to reflect the official specification | ||||
| @@ -103,31 +100,6 @@ still running in background. This would result in assertions when starting a | |||||
| second instance. | second instance. | ||||
| Change | |||||
| ------ | |||||
| Calling JUCEApplicationBase::quit() on Android will now really quit the app, | |||||
| rather than just placing it in background. Starting with API level 21 (Android | |||||
| 5.0), the app will not appear in recent apps list after calling quit(). Prior | |||||
| to API 21, the app will still appear in recent app lists but when a user | |||||
| chooses the app, a new instance of the app will be started. | |||||
| Possible Issues | |||||
| --------------- | |||||
| Any code calling JUCEApplicationBase::quit() to place the app in background | |||||
| will close the app instead. | |||||
| Workaround | |||||
| ---------- | |||||
| Use Process::hide(). | |||||
| Rationale | |||||
| --------- | |||||
| The old behaviour JUCEApplicationBase::quit() was confusing JUCE code, as a new | |||||
| instance of JUCE app was attempted to be created, while the older instance was | |||||
| still running in background. This would result in assertions when starting a | |||||
| second instance. | |||||
| Change | Change | ||||
| ------ | ------ | ||||
| On Windows, release builds will now link to the dynamic C++ runtime by default | On Windows, release builds will now link to the dynamic C++ runtime by default | ||||