Skip to content

Commit

Permalink
ncvisual_set_data: handle incoming data equivalent to existing data
Browse files Browse the repository at this point in the history
  • Loading branch information
dankamongmen committed May 3, 2021
1 parent 584f394 commit 9a5b719
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
4 changes: 3 additions & 1 deletion src/lib/visual-details.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ typedef struct ncvisual {
static inline void
ncvisual_set_data(ncvisual* ncv, void* data, bool owned){
if(ncv->owndata){
free(ncv->data);
if(data != ncv->data){
free(ncv->data);
}
}
ncv->data = (uint32_t*)data;
ncv->owndata = owned;
Expand Down
9 changes: 6 additions & 3 deletions src/media/ffmpeg.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,9 +244,12 @@ int ffmpeg_resize(ncvisual* n, int rows, int cols){
n->rowstride = sframe->linesize[0];
n->pixy = rows;
n->pixx = cols;
ncvisual_set_data(n, sframe->data[0], false);
if(n->details->frame){
av_freep(&n->details->frame);
if((uint32_t*)sframe->data[0] != n->data){
//fprintf(stderr, "SETTING UP RESIZE %p\n", n->data);
ncvisual_set_data(n, sframe->data[0], false);
if(n->details->frame){
av_freep(&n->details->frame);
}
}
n->details->frame = sframe;

Expand Down

0 comments on commit 9a5b719

Please sign in to comment.