diff --git a/src/drm.cpp b/src/drm.cpp index 32d2649..7f57d72 100644 --- a/src/drm.cpp +++ b/src/drm.cpp @@ -607,6 +607,12 @@ int init_drm(struct drm_t *drm, const char *device_name) return 0; } +void finish_drm(struct drm_t *drm) +{ + close(drm->fd); + drm->fd = -1; +} + static int add_property(drmModeAtomicReq *req, uint32_t obj_id, std::map &props, const char *name, uint64_t value) { if ( props.count( name ) == 0 ) diff --git a/src/drm.hpp b/src/drm.hpp index 5274e17..dc06076 100644 --- a/src/drm.hpp +++ b/src/drm.hpp @@ -125,6 +125,7 @@ extern bool g_bDebugLayers; extern const char *g_sOutputName; int init_drm(struct drm_t *drm, const char *device); +void finish_drm(struct drm_t *drm); int drm_commit(struct drm_t *drm, struct Composite_t *pComposite, struct VulkanPipeline_t *pPipeline ); int drm_prepare( struct drm_t *drm, const struct Composite_t *pComposite, const struct VulkanPipeline_t *pPipeline ); bool drm_poll_state(struct drm_t *drm); diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp index f441629..34e9ab0 100644 --- a/src/steamcompmgr.cpp +++ b/src/steamcompmgr.cpp @@ -3852,4 +3852,6 @@ steamcompmgr_main (int argc, char **argv) statsThreadRun = false; statsThreadSem.signal(); } + + finish_drm( &g_DRM ); }