mirror of
https://github.com/mpv-player/mpv
synced 2024-12-23 23:32:26 +00:00
fix bug when bmovl can't read the whole pic at once
patch by Detlev Droege <droege@uni-koblenz.de> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11621 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
5cd067e6a0
commit
b164638fba
@ -199,6 +199,7 @@ _read_cmd(int fd, char *cmd, char *args) {
|
||||
static int
|
||||
put_image(struct vf_instance_s* vf, mp_image_t* mpi){
|
||||
int buf_x=0, buf_y=0, buf_pos=0;
|
||||
int have, got, want;
|
||||
int xpos=0, ypos=0, pos=0;
|
||||
unsigned char red=0, green=0, blue=0;
|
||||
int alpha;
|
||||
@ -267,7 +268,22 @@ put_image(struct vf_instance_s* vf, mp_image_t* mpi){
|
||||
mp_msg(MSGT_VFILTER, MSGL_WARN, "\nvf_bmovl: Couldn't allocate temporary buffer! Skipping...\n\n");
|
||||
return vf_next_put_image(vf, dmpi);
|
||||
}
|
||||
mp_msg(MSGT_VFILTER, MSGL_DBG2, "Got %d bytes...\n", read( vf->priv->stream_fd, buffer, (imgw*imgh*pxsz) ) );
|
||||
/* pipes/sockets might need multiple calls to read(): */
|
||||
want = (imgw*imgh*pxsz);
|
||||
have = 0;
|
||||
while (have < want) {
|
||||
got = read( vf->priv->stream_fd, buffer+have, want-have );
|
||||
if (got == 0) {
|
||||
mp_msg(MSGT_VFILTER, MSGL_WARN, "\nvf_bmovl: premature EOF...\n\n");
|
||||
break;
|
||||
}
|
||||
if (got < 0) {
|
||||
mp_msg(MSGT_VFILTER, MSGL_WARN, "\nvf_bmovl: read error: %s\n\n", strerror(errno));
|
||||
break;
|
||||
}
|
||||
have += got;
|
||||
}
|
||||
mp_msg(MSGT_VFILTER, MSGL_DBG2, "Got %d bytes... (wanted %d)\n", have, want );
|
||||
|
||||
if(clear) {
|
||||
memset( vf->priv->bitmap.y, 0, vf->priv->w*vf->priv->h );
|
||||
|
Loading…
Reference in New Issue
Block a user