mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-17 16:44:29 +03:00
Use posix buffer
This commit is contained in:
parent
707f62c891
commit
0ed221afd1
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
|
import mmap
|
||||||
import subprocess as sp
|
import subprocess as sp
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from string import printable
|
from string import printable
|
||||||
@ -736,21 +737,20 @@ class UntrackedSharedMemory:
|
|||||||
self,
|
self,
|
||||||
name: Optional[str] = None,
|
name: Optional[str] = None,
|
||||||
create: bool = False,
|
create: bool = False,
|
||||||
unlink: bool = False,
|
|
||||||
size: int = 0,
|
size: int = 0,
|
||||||
) -> None:
|
) -> None:
|
||||||
if unlink:
|
|
||||||
return
|
|
||||||
|
|
||||||
flag = posix_ipc.O_CREAT if create else 0
|
flag = posix_ipc.O_CREAT if create else 0
|
||||||
self.shm_store = posix_ipc.SharedMemory(name, flags=flag, size=size)
|
self.shm_store = posix_ipc.SharedMemory(name, flags=flag, size=size)
|
||||||
|
self.mm = mmap.mmap(self.shm_store.fd, 0)
|
||||||
|
self.buf = memoryview(self.mm)
|
||||||
|
|
||||||
def close(self) -> None:
|
def close(self) -> None:
|
||||||
self.shm_store.fd_close()
|
del self.buf
|
||||||
|
del self.mm
|
||||||
|
self.shm_store.close_fd()
|
||||||
|
|
||||||
def unlink(self, name: str) -> None:
|
def unlink(self) -> None:
|
||||||
shm = posix_ipc.SharedMemory(name, flags=posix_ipc.O_TRUNC, size=0)
|
self.shm_store.unlink()
|
||||||
shm.unlink()
|
|
||||||
|
|
||||||
|
|
||||||
class SharedMemoryFrameManager(FrameManager):
|
class SharedMemoryFrameManager(FrameManager):
|
||||||
@ -787,14 +787,14 @@ class SharedMemoryFrameManager(FrameManager):
|
|||||||
self.shm_store[name].close()
|
self.shm_store[name].close()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.shm_store[name].unlink(name)
|
self.shm_store[name].unlink()
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
del self.shm_store[name]
|
del self.shm_store[name]
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
shm = UntrackedSharedMemory(name=name, unlink=True)
|
shm = UntrackedSharedMemory(name=name)
|
||||||
shm.close()
|
shm.close()
|
||||||
shm.unlink()
|
shm.unlink()
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user