On 5/15/25 05:45, Vivek Kasireddy wrote: > +bool surface_gl_create_texture_from_fd(DisplaySurface *surface, > + int fd, GLuint *texture) > +{ > + unsigned long size = surface_stride(surface) * surface_height(surface); > + GLenum err = glGetError(); > + GLuint mem_obj; > + > + if (!epoxy_has_gl_extension("GL_EXT_memory_object") || > + !epoxy_has_gl_extension("GL_EXT_memory_object_fd")) { > + return false; > + } > + > +#ifdef GL_EXT_memory_object_fd > + glCreateMemoryObjectsEXT(1, &mem_obj); > + glImportMemoryFdEXT(mem_obj, size, GL_HANDLE_TYPE_OPAQUE_FD_EXT, fd); > + > + err = glGetError(); > + if (err != GL_NO_ERROR) { > + error_report("spice: cannot import memory object from fd"); > + return false; > + }
mem_obj should be destroyed on error and when created texture is released -- Best regards, Dmitry