texture copy ops break when moved to different context

Here’s the scenario-

I’ve got 4 GLCanvases that are init(GL)'d identically. I have 4 corresponding GLEventListeners that do the rendering on each of them. 1 of the 4 is substantially more complex than the others. I’m trying to get it so that i can “unplug” the listeners from 2 of my canvases and swap them around on the fly. All my textures and display lists are shared to all 4 contexts. The 3 simple renderers work very well, and hop around perfectly from canvas to canvas. but my 4th renderer does some complicated multi-pass stuff. It draws a bunch of input images for a (raycasting) shader, copying each input image to a texture. It then feeds all of these textures into the shader to produce my final output.

It seems that when the advanced renderer is running on any canvas other than it’s “home” canvas, the shader only gets 0’s in all the input textures. (but whenever it comes back around to be on it’s “home” canvas, continues to work perfectly) I’ve confirmed that my individual input image generation passes are each rendering ok, but somehow my data is not being captured by the copyTexSubImage() calls. Does someone know why this is? Or if there’s anything i can do about it?