diff options
Diffstat (limited to 'modules/gdnative/videodecoder/video_stream_gdnative.cpp')
| -rw-r--r-- | modules/gdnative/videodecoder/video_stream_gdnative.cpp | 32 | 
1 files changed, 11 insertions, 21 deletions
diff --git a/modules/gdnative/videodecoder/video_stream_gdnative.cpp b/modules/gdnative/videodecoder/video_stream_gdnative.cpp index f2fb0a2fdc..8b0434c7dd 100644 --- a/modules/gdnative/videodecoder/video_stream_gdnative.cpp +++ b/modules/gdnative/videodecoder/video_stream_gdnative.cpp @@ -47,11 +47,7 @@ godot_int GDAPI godot_videodecoder_file_read(void *ptr, uint8_t *buf, int buf_si  	// if file exists  	if (file) { -		long bytes_read = file->get_buffer(buf, buf_size); -		// No bytes to read => EOF -		if (bytes_read == 0) { -			return 0; -		} +		int64_t bytes_read = file->get_buffer(buf, buf_size);  		return bytes_read;  	}  	return -1; @@ -62,41 +58,35 @@ int64_t GDAPI godot_videodecoder_file_seek(void *ptr, int64_t pos, int whence) {  	FileAccess *file = reinterpret_cast<FileAccess *>(ptr);  	if (file) { -		size_t len = file->get_len(); +		int64_t len = file->get_length();  		switch (whence) {  			case SEEK_SET: { -				// Just for explicitness -				size_t new_pos = static_cast<size_t>(pos); -				if (new_pos > len) { +				if (pos > len) {  					return -1;  				} -				file->seek(new_pos); -				pos = static_cast<int64_t>(file->get_position()); -				return pos; +				file->seek(pos); +				return file->get_position();  			} break;  			case SEEK_CUR: {  				// Just in case it doesn't exist -				if (pos < 0 && (size_t)-pos > file->get_position()) { +				if (pos < 0 && -pos > (int64_t)file->get_position()) {  					return -1;  				} -				pos = pos + static_cast<int>(file->get_position()); -				file->seek(pos); -				pos = static_cast<int64_t>(file->get_position()); -				return pos; +				file->seek(file->get_position() + pos); +				return file->get_position();  			} break;  			case SEEK_END: {  				// Just in case something goes wrong -				if ((size_t)-pos > len) { +				if (-pos > len) {  					return -1;  				}  				file->seek_end(pos); -				pos = static_cast<int64_t>(file->get_position()); -				return pos; +				return file->get_position();  			} break;  			default: {  				// Only 4 possible options, hence default = AVSEEK_SIZE  				// Asks to return the length of file -				return static_cast<int64_t>(len); +				return len;  			} break;  		}  	}  |