GstGLContextEagl * gst_gl_context_eagl_new (void);
+void gst_gl_context_eagl_resize (GstGLContextEagl * eagl_context);
void gst_gl_context_eagl_prepare_draw (GstGLContextEagl * context);
void gst_gl_context_eagl_finish_draw (GstGLContextEagl * context);
guintptr gst_gl_context_eagl_get_current_context (void);
return context;
}
+void
+gst_gl_context_eagl_resize (GstGLContextEagl * eagl_context)
+{
+ int width, height;
+
+ glBindRenderbuffer (GL_RENDERBUFFER, eagl_context->priv->color_renderbuffer);
+ [eagl_context->priv->eagl_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:eagl_context->priv->eagl_layer];
+ glGetRenderbufferParameteriv (GL_RENDERBUFFER,
+ GL_RENDERBUFFER_WIDTH, &width);
+ glGetRenderbufferParameteriv (GL_RENDERBUFFER,
+ GL_RENDERBUFFER_HEIGHT, &height);
+ glBindRenderbuffer (GL_RENDERBUFFER, eagl_context->priv->depth_renderbuffer);
+ glRenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width,
+ height);
+}
+
static gboolean
gst_gl_context_eagl_create_context (GstGLContext * context, GstGLAPI gl_api,
GstGLContext * other_context, GError ** error)
eagl_layer = (CAEAGLLayer *)[window_eagl->priv->view layer];
size = eagl_layer.frame.size;
- if (window_eagl->priv->window_width != window_eagl->priv->preferred_width ||
- window_eagl->priv->window_height != window_eagl->priv->preferred_height) {
- window_eagl->priv->window_width = window_eagl->priv->preferred_width;
- window_eagl->priv->window_height = window_eagl->priv->preferred_height;
+ if (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);
if (window->resize)
- window->resize (window->resize_data, window_eagl->priv->preferred_width,
- window_eagl->priv->preferred_height);
+ window->resize (window->resize_data, window_eagl->priv->window_width,
+ window_eagl->priv->window_height);
}
}