summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-10-06 14:10:23 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-10-06 14:10:23 -0500
commit0e824732db028517232f1f699ba68b2c79d5dc50 (patch)
treebcc2a6ffa97ac1cc7a8141296bfd33cd51fa91b4
parenteffa31d902975a70f5856ee03b951f5b26054447 (diff)
downloadk9copy-0e824732db028517232f1f699ba68b2c79d5dc50.tar.gz
k9copy-0e824732db028517232f1f699ba68b2c79d5dc50.zip
Fix another crash casued by old av_packet_free routine
-rw-r--r--k9author/k9avidecode.cpp5
-rw-r--r--k9author/k9avidecode.h2
-rw-r--r--src/k9copy.cpp3
3 files changed, 8 insertions, 2 deletions
diff --git a/k9author/k9avidecode.cpp b/k9author/k9avidecode.cpp
index 77f8d2b..a3a23c6 100644
--- a/k9author/k9avidecode.cpp
+++ b/k9author/k9avidecode.cpp
@@ -40,7 +40,7 @@ int glibref=0;
#ifdef NEW_FFMPEG
#ifdef NEEDS_AV_FREE_PACKET
-void av_free_packet(AVPacket *pkt)
+void av_free_packet_internal(AVPacket *pkt)
{
if (pkt) {
if (pkt->destruct) pkt->destruct(pkt);
@@ -121,6 +121,9 @@ k9AviDecode::k9AviDecode(TQObject *parent, const char *name)
errs << i18n("Cannot open the library %1").arg("libswscale");
# endif
av_free = (av_free_t)dlsym(CodecHandle,"av_free");
+ av_free_packet = (av_free_packet_t)dlsym(CodecHandle,"av_free_packet");
+ if (av_free_packet==0)
+ av_free_packet=av_free_packet_internal;
avcodec_close = (avcodec_close_t)dlsym(FormatHandle,"avcodec_close");
# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 17, 0)
avformat_close_input = (avformat_close_input_t)dlsym(FormatHandle,"avformat_close_input");
diff --git a/k9author/k9avidecode.h b/k9author/k9avidecode.h
index 907533d..912cb85 100644
--- a/k9author/k9avidecode.h
+++ b/k9author/k9avidecode.h
@@ -78,6 +78,7 @@ typedef void (*av_close_input_file_t)(AVFormatContext *);
#endif
typedef int (*av_seek_frame_t)(AVFormatContext *,int,int64_t timestamp,int flags); typedef int64_t (*av_rescale_q_t)(int64_t , AVRational , AVRational ) ;
typedef void (*avcodec_flush_buffers_t)(AVCodecContext *);
+typedef void (*av_free_packet_t)(AVPacket *);
#ifdef HAVE_SWSCALE
typedef void (*sws_freeContext_t)(struct SwsContext *swsContext);
@@ -145,6 +146,7 @@ private:
av_rescale_q_t av_rescale_q;
av_gettime_t av_gettime;
avcodec_flush_buffers_t avcodec_flush_buffers;
+ av_free_packet_t av_free_packet;
# ifdef HAVE_SWSCALE
sws_freeContext_t sws_freeContext;
sws_getContext_t sws_getContext;
diff --git a/src/k9copy.cpp b/src/k9copy.cpp
index 849ae96..76f77ac 100644
--- a/src/k9copy.cpp
+++ b/src/k9copy.cpp
@@ -46,7 +46,8 @@ k9Copy::k9Copy()
: KMdiMainFrm( 0, "k9Copy" ,KMdi::IDEAlMode ) {
// tell the TDEMainWindow that this is indeed the main widget
m_k9MainView=NULL;
- m_k9ImportView =NULL;
+ m_k9ImportView=NULL;
+ m_chapterEdit=NULL;
// accept dnd
setAcceptDrops(true);