From 012dac9aadbfd69fa2b6233496e9383e27f0e8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Wed, 12 Dec 2018 15:21:44 +0100 Subject: Fix includes and initialization for GDNative Videodecoder Fixes warnings and a crash when running the destructor with an uninitialized pcm pointer. --- modules/gdnative/videodecoder/SCsub | 3 --- modules/gdnative/videodecoder/register_types.cpp | 5 ++++- .../videodecoder/resource_importer_av_gdnative.cpp | 4 ++-- .../videodecoder/resource_importer_av_gdnative.h | 3 +-- .../videodecoder/video_stream_gdnative.cpp | 22 +++++++++++++++++----- .../gdnative/videodecoder/video_stream_gdnative.h | 17 ++++++++--------- 6 files changed, 32 insertions(+), 22 deletions(-) (limited to 'modules') diff --git a/modules/gdnative/videodecoder/SCsub b/modules/gdnative/videodecoder/SCsub index 51b0418d6b..8d9c1ff50e 100644 --- a/modules/gdnative/videodecoder/SCsub +++ b/modules/gdnative/videodecoder/SCsub @@ -1,8 +1,5 @@ #!/usr/bin/env python -import os -import methods - Import('env') Import('env_modules') diff --git a/modules/gdnative/videodecoder/register_types.cpp b/modules/gdnative/videodecoder/register_types.cpp index 64599365e5..70eea2e036 100644 --- a/modules/gdnative/videodecoder/register_types.cpp +++ b/modules/gdnative/videodecoder/register_types.cpp @@ -28,7 +28,9 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "class_db.h" +#include "register_types.h" + +#include "core/class_db.h" #include "resource_importer_av_gdnative.h" #include "video_stream_gdnative.h" @@ -41,5 +43,6 @@ void register_videodecoder_types() { #endif ClassDB::register_class(); } + void unregister_videodecoder_types() { } diff --git a/modules/gdnative/videodecoder/resource_importer_av_gdnative.cpp b/modules/gdnative/videodecoder/resource_importer_av_gdnative.cpp index ff9f6118fb..7fe8cc89d1 100644 --- a/modules/gdnative/videodecoder/resource_importer_av_gdnative.cpp +++ b/modules/gdnative/videodecoder/resource_importer_av_gdnative.cpp @@ -30,8 +30,8 @@ #include "resource_importer_av_gdnative.h" -#include "io/resource_saver.h" -#include "os/file_access.h" +#include "core/io/resource_saver.h" +#include "core/os/file_access.h" #include "scene/resources/texture.h" String ResourceImporterAVGDNative::get_importer_name() const { diff --git a/modules/gdnative/videodecoder/resource_importer_av_gdnative.h b/modules/gdnative/videodecoder/resource_importer_av_gdnative.h index 0ec96dc72c..9760ebbe64 100644 --- a/modules/gdnative/videodecoder/resource_importer_av_gdnative.h +++ b/modules/gdnative/videodecoder/resource_importer_av_gdnative.h @@ -31,9 +31,8 @@ #ifndef RESOURCE_IMPORTER_AV_GDNATIVE_H #define RESOURCE_IMPORTER_AV_GDNATIVE_H -#include "video_stream_gdnative.h" - #include "core/io/resource_import.h" +#include "video_stream_gdnative.h" class ResourceImporterAVGDNative : public ResourceImporter { GDCLASS(ResourceImporterAVGDNative, ResourceImporter) diff --git a/modules/gdnative/videodecoder/video_stream_gdnative.cpp b/modules/gdnative/videodecoder/video_stream_gdnative.cpp index a959a4c8ae..ea847f9804 100644 --- a/modules/gdnative/videodecoder/video_stream_gdnative.cpp +++ b/modules/gdnative/videodecoder/video_stream_gdnative.cpp @@ -29,13 +29,16 @@ /*************************************************************************/ #include "video_stream_gdnative.h" -#include -#include + +#include "core/project_settings.h" +#include "servers/audio_server.h" VideoDecoderServer *VideoDecoderServer::instance = NULL; static VideoDecoderServer decoder_server; +const int AUX_BUFFER_SIZE = 1024; // Buffer 1024 samples. + // NOTE: Callbacks for the GDNative libraries. extern "C" { godot_int GDAPI godot_videodecoder_file_read(void *ptr, uint8_t *buf, int buf_size) { @@ -184,12 +187,20 @@ void VideoStreamPlaybackGDNative::update_texture() { VideoStreamPlaybackGDNative::VideoStreamPlaybackGDNative() : texture(Ref(memnew(ImageTexture))), - time(0), + playing(false), + paused(false), mix_udata(NULL), mix_callback(NULL), num_channels(-1), + time(0), mix_rate(0), - playing(false) {} + delay_compensation(0), + pcm(NULL), + pcm_write_idx(0), + samples_decoded(0), + file(NULL), + interface(NULL), + data_struct(NULL) {} VideoStreamPlaybackGDNative::~VideoStreamPlaybackGDNative() { cleanup(); @@ -198,7 +209,8 @@ VideoStreamPlaybackGDNative::~VideoStreamPlaybackGDNative() { void VideoStreamPlaybackGDNative::cleanup() { if (data_struct) interface->destructor(data_struct); - memfree(pcm); + if (pcm) + memfree(pcm); pcm = NULL; time = 0; num_channels = -1; diff --git a/modules/gdnative/videodecoder/video_stream_gdnative.h b/modules/gdnative/videodecoder/video_stream_gdnative.h index d203a5d04f..87ba9c8cc4 100644 --- a/modules/gdnative/videodecoder/video_stream_gdnative.h +++ b/modules/gdnative/videodecoder/video_stream_gdnative.h @@ -31,15 +31,15 @@ #ifndef VIDEO_STREAM_GDNATIVE_H #define VIDEO_STREAM_GDNATIVE_H -#include -#include -#include -#include +#include "../gdnative.h" +#include "core/os/file_access.h" +#include "scene/resources/texture.h" +#include "scene/resources/video_stream.h" struct VideoDecoderGDNative { + const godot_videodecoder_interface_gdnative *interface; String plugin_name; Vector supported_extensions; - const godot_videodecoder_interface_gdnative *interface; VideoDecoderGDNative() : interface(NULL), @@ -124,7 +124,6 @@ class VideoStreamPlaybackGDNative : public VideoStreamPlayback { int mix_rate; double delay_compensation; - const int AUX_BUFFER_SIZE = 1024; // Buffer 1024 samples. float *pcm; int pcm_write_idx; int samples_decoded; @@ -135,10 +134,10 @@ class VideoStreamPlaybackGDNative : public VideoStreamPlayback { protected: String file_name; - FileAccess *file = NULL; + FileAccess *file; - const godot_videodecoder_interface_gdnative *interface = NULL; - void *data_struct = NULL; + const godot_videodecoder_interface_gdnative *interface; + void *data_struct; public: VideoStreamPlaybackGDNative(); -- cgit v1.2.3