vaapi-recorder: Don't leak drm fd
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Fri, 6 Sep 2013 14:49:38 +0000 (17:49 +0300)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 11 Sep 2013 18:55:32 +0000 (11:55 -0700)
Make vaapi_recorder take onwership of the fd and close it at destroy
time.

src/compositor-drm.c
src/vaapi-recorder.c

index 7f6ffbc..68406da 100644 (file)
@@ -2523,7 +2523,6 @@ recorder_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                weston_log("[libva recorder] initialized\n");
        } else {
                vaapi_recorder_destroy(output->recorder);
-               /* FIXME: close drm fd passed to recorder */
                output->recorder = NULL;
 
                output->base.disable_planes--;
index e9127da..84848e4 100644 (file)
@@ -87,7 +87,7 @@
 #define PROFILE_IDC_HIGH        100
 
 struct vaapi_recorder {
-       int output_fd;
+       int drm_fd, output_fd;
        int width, height;
        int frame_count;
 
@@ -942,6 +942,7 @@ vaapi_recorder_create(int drm_fd, int width, int height, const char *filename)
 
        r->width = width;
        r->height = height;
+       r->drm_fd = drm_fd;
 
        flags = O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC;
        r->output_fd = open(filename, flags, 0644);
@@ -1000,6 +1001,7 @@ vaapi_recorder_destroy(struct vaapi_recorder *r)
        vaTerminate(r->va_dpy);
 
        close(r->output_fd);
+       close(r->drm_fd);
 
        free(r);
 }