From: Chad Fraleigh <ch...@triularity.org> > > On 7/22/2019 11:14 AM, aran.clau...@wwu.edu wrote: > >> +static void rm_shmid(AVFormatContext *s) { >> + XCBGrabContext *c = s->priv_data; >> + if(c->shmid != -1) { >> + shmctl(c->shmid, IPC_RMID, 0); >> + c->shmid == -1; > ^^^^^^^^^^^^^^ > Assignment/compare operator mismatch. > > >> + } >> +} >> +
Well, that's embarrassing. diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c index b7e689343e..1acf3cdf28 100644 --- a/libavdevice/xcbgrab.c +++ b/libavdevice/xcbgrab.c @@ -75,6 +75,7 @@ typedef struct XCBGrabContext { const char *framerate; int has_shm; + int shmid; } XCBGrabContext; #define FOLLOW_CENTER -1 @@ -221,6 +222,14 @@ static int check_shm(xcb_connection_t *conn) return 0; } +static void rm_shmid(AVFormatContext *s) { + XCBGrabContext *c = s->priv_data; + if(c->shmid != -1) { + shmctl(c->shmid, IPC_RMID, 0); + c->shmid = -1; + } +} + static int allocate_shm(AVFormatContext *s) { XCBGrabContext *c = s->priv_data; @@ -230,7 +239,8 @@ static int allocate_shm(AVFormatContext *s) if (c->buffer) return 0; - id = shmget(IPC_PRIVATE, size, IPC_CREAT | 0777); + + id = shmget(IPC_PRIVATE, size, IPC_CREAT | 0666); if (id == -1) { char errbuf[1024]; int err = AVERROR(errno); @@ -239,15 +249,20 @@ static int allocate_shm(AVFormatContext *s) size, errbuf); return err; } + xcb_shm_attach(c->conn, c->segment, id, 0); data = shmat(id, NULL, 0); - shmctl(id, IPC_RMID, 0); - if ((intptr_t)data == -1 || !data) - return AVERROR(errno); + + if ((intptr_t)data == -1 || !data) { + shmctl(id, IPC_RMID, 0); + return AVERROR(errno); + } c->buffer = data; + c->shmid = id; return 0; } + static int xcbgrab_frame_shm(AVFormatContext *s, AVPacket *pkt) { XCBGrabContext *c = s->priv_data; @@ -268,6 +283,8 @@ static int xcbgrab_frame_shm(AVFormatContext *s, AVPacket *pkt) xcb_flush(c->conn); + rm_shmid(s); + if (e) { av_log(s, AV_LOG_ERROR, "Cannot get the image data "
pgpuJi_hdCDXT.pgp
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".