mrackwitz / MRProgress

Collection of iOS drop-in components to visualize progress
MIT License
2.55k stars 306 forks source link

Flickering issue when rotating on iPad #42

Closed jdmunro closed 10 years ago

jdmunro commented 10 years ago

If using this component on an iPad, it is possible to cause the screen to flicker briefly while rotating the app. This is reproducible in the sample app. I am unsure if this happens in iPad apps - I have so far only tested this in iPhone apps running on an iPad. Perhaps the issue is related to rendering the blur texture?

Steps to reproduce:

Using version 0.4.3.

See the video for the glitch - it is quite subtle: https://drive.google.com/file/d/0B7hk_IdN2v-QUUFOcld6VGY2Y2JwYzViWlFxOTE1cy1RRzN3/edit?usp=sharing

screen shot 2014-05-29 at 10 59 03

mrackwitz commented 10 years ago

This is even reproducable in the iPad simulator. I could locate this issue to the following single line in MRBlurView.

[window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES];

If I change the second argument to NO, the flickering doesn't happen anymore... but there was a reason, because it should draw after screen updates: We have to ensure, that we do not include the progress pane itself while we draw the snapshot. So I think this flickering has to be a bug in Apple's implementation as we are rendering there offscreen and this actually influences what happens on the screen. So I would solve it by setting the second argument NO for iPad only, until this will be fixed.

jdmunro commented 10 years ago

Thanks again for the quick response. I'll try the workaround and let you know how it goes.

mrackwitz commented 10 years ago

I have further explored this issue, and have to say, that my workaround doesn't solve it. It isn't iPad specific and it has other side-effects. But I have already found a solution for that and found another issue along the way.

jdmunro commented 10 years ago

I'm just testing out this new version and I am still having a similar issue. When loading up the app on device, when the progress view is first presented, I still get a brief flickering, however it only happens once now - is this an expected side effect?

mrackwitz commented 10 years ago

This flicker is probably the change from the non-blurred to the blurred background, where the first background state was implemented to solve #39. So this side-effect is expected. But it shouldn't be slower, although this happens perhaps because it is dispatched async and executed later.

jdmunro commented 10 years ago

The side effect is quite severe - here's a video: https://drive.google.com/file/d/0B7hk_IdN2v-QRy1lNWZHTmg1SDNQWHotalRrVjFldHlhd0lR/edit?usp=sharing Do you want me to open a new issue?