Hi,
should CCControlSwitchSprite::draw() use ccGLBindTexture2D( getTexture()->getName() ); and ccGLBindTexture2DN( 1, m_pMaskTexture->getName() ); instead of glActiveTexture and glBindTexture? I think with the current implementation the gl state caching ca not work!