On 7/23/19, aran.clau...@wwu.edu <aran.clau...@wwu.edu> wrote: > 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.
Do not simply concat your patch to rest of mail. Please use git format-patch and then attach it to new mail. Or use git send-email. > > 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 " > > > _______________________________________________ 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".