iOS GL_INVALID_VALUE when using animator proxy component


#1

I have a component which is a bar which starts just off screen and comes down from above the screen like so:

auto bounds = getBounds();

bounds.setY(0);

juce::Desktop::getInstance().getAnimator().animateComponent(this, bounds, 1.0f, 1000, true, 2, 0);

This seems to work except on an iphone 6 large in landscape mode. In that case in debug I get a SIGTRAP from the opengl error GL_INVALID_VALUE. I can't tell exactly why this is happening but when I go up the call stack it's trying to `OpenGLTexture::create`. The width and height passed in are 4416x762 (can a texture > 4096 be made? this is exactly 2x the res I was expecting and want) and then after `getAllowedTextureSize (w)` it becomes 8192x1024.

Does anyone know anything about this?


#2

iOS can be a bit unhappy about having windows which are partially offscreen - maybe make the animated bar a child component of your top-level full-screen window instead?


#3

Thanks for the reply. That doesn't change anything, and also changing the animation to never be off screen also doesn't change anything. I forgot to make the most important part clear - this only occurs when useProxyComponent = true... so something to do with the snapshot image. I'm also having trouble in another spot where I do createComponentSnapshot manually and display that image, where it works fine except on android where the colors are inverted. I'm thinking it's something wrong with juce::Flipper.

I'm pretty sure the issue here is that it's trying to create a texture bigger than GL_MAX_TEXTURE_SIZE. Shouldn't it restrict the texture to be a size that can be created?


#4

Yes, could be that.. Thanks, I'll put it on my list of things to look into!