gl/eagl: Fix automatic resize behaviour

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/681
added a layoutSubViews, which never gets called, because it should have been
called layoutSubviews (non-capital "v"). However after fixing that, it still
doesn't work correctly, because window_width/height values are immediately
updated and then draw_cb will never trigger the resize path, because the
values are already up to date.
Update the values inside the resize path again instead, so the check for
entering the resize path is logically always correct.
This makes the layoutSubviews unnecessary, as it only updated the internal
size values prematurely, so it is deleted instead of method naming fixed.

These changes were originally done to avoid accessing UIKit objects on the
main thread, but no additional accesses are added here, only internal
private variable assignments under the same draw_lock, so there should be
no threading issues reintroduced.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/945>
This commit is contained in:
Mart Raudsepp 2020-11-26 14:52:26 +02:00 committed by GStreamer Merge Bot
parent 8ffea3afb5
commit 526cb2baa8

View file

@ -313,6 +313,9 @@ draw_cb (gpointer data)
if (window->queue_resize || window_eagl->priv->window_width != size.width ||
window_eagl->priv->window_height != size.height) {
window_eagl->priv->window_width = size.width;
window_eagl->priv->window_height = size.height;
gst_gl_context_eagl_resize (eagl_context);
gst_gl_window_resize (window, window_eagl->priv->window_width,
@ -368,16 +371,6 @@ gst_gl_window_eagl_get_layer (GstGLWindowEagl * window_eagl)
window_eagl = window;
}
-(void) layoutSubViews
{
g_mutex_lock (&window_eagl->priv->draw_lock);
[super layoutSubviews];
CGSize rect = self.bounds.size;
self->window_eagl->priv->window_width = rect.width;
self->window_eagl->priv->window_height = rect.height;
g_mutex_unlock (&window_eagl->priv->draw_lock);
}
@end
void