reloadTextures() problem SOLVED

I’m experiencing a subtle bug with reloadTextures();

When sending the app to the background and resuming normally, reloadTextures() is called once and my reload works.

However, when I put the phone to sleep (power button press) and then wake the phone up (power button press and unlock gesture) with the app in the foreground, reloadTextures() gets called twice. this results in a failure to load and white textures. (ofImage class)

I’m posting in pause() and reloadTextures():

  
08-31 09:38:45.838: INFO/OF(22284): pause()  
08-31 09:38:45.838: INFO/OF(22284): ofVideoGrabber: releasing textures  
08-31 09:38:48.770: INFO/OF(22284): onResume  
08-31 09:38:48.820: INFO/OF(22284): ofVideoGrabber: trying to allocate textures  
08-31 09:38:48.820: INFO/OF(22284): ofVideoGrabber: textures allocated  
08-31 09:38:48.991: INFO/OF(22284): onSurfaceCreated  
08-31 09:38:49.361: INFO/OF(22284): ofVideoGrabber: trying to allocate textures  
08-31 09:38:49.361: INFO/OF(22284): ofVideoGrabber: textures allocated  
08-31 09:38:50.392: INFO/OF(22284): reloadTextures()  
08-31 09:38:51.413: INFO/OF(22284): reloadTextures()  
08-31 09:38:53.235: INFO/OF(22284): resize 540,960  
  

for now i’m going to set a flag in pause() and reloadTextures(), so that the reload only happens once, but this should be addressed in the OFAndroid class.

SOLUTION:
For those experiencing similar problems with texture and general drawing reload problems in Android:

Make sure to call all general drawing setups again in the resume() or reloadTextures() functions.
My problem was that ofEnableAlphaBlending() wasn’t valid, since this state of the OpenGL machine isn’t preserved across pause()/resume() cycles when the phone goes to sleep. since my textures contain alpha-information, this resulted in white textures. Calling ofEnableAlphaBlending() in resume() solved my problem.

cheers

/*j

Actually i realized yesterday that resume and reloadTextures is being called twice, i fixed it in the develop branch, the change is in ofAppAndroidWindow, where it was calling those methods both in resume and onSurfaceCreated:

https://github.com/openframeworks/openFrameworks/commit/199254b65d4c4d690ba92eaa10b5ebf5bb010eb8

I think your problem is actually related to the double call cause when the app is paused it calls ofPushStyle and then when it’s resumed it calls ofPopStyle which should restore the blending.