summaryrefslogtreecommitdiff
path: root/poppler/Rendition.cc
diff options
context:
space:
mode:
Diffstat (limited to 'poppler/Rendition.cc')
-rw-r--r--poppler/Rendition.cc53
1 files changed, 26 insertions, 27 deletions
diff --git a/poppler/Rendition.cc b/poppler/Rendition.cc
index 4e7727e8..89bf1a50 100644
--- a/poppler/Rendition.cc
+++ b/poppler/Rendition.cc
@@ -246,14 +246,8 @@ void MediaParameters::parseMediaScreenParameters(Object* obj) {
}
MediaRendition::~MediaRendition() {
- if (fileName)
- delete fileName;
- if (contentType)
- delete contentType;
-
- if (embeddedStream && (!embeddedStream->decRef())) {
- delete embeddedStream;
- }
+ delete fileName;
+ delete contentType;
}
MediaRendition::MediaRendition(Object* obj) {
@@ -263,7 +257,6 @@ MediaRendition::MediaRendition(Object* obj) {
fileName = NULL;
contentType = NULL;
isEmbedded = gFalse;
- embeddedStream = NULL;
//
// Parse media clip data
@@ -285,9 +278,7 @@ MediaRendition::MediaRendition(Object* obj) {
Object embedded = obj2.dictLookup("F");
if (embedded.isStream()) {
isEmbedded = gTrue;
- embeddedStream = embedded.getStream();
- // "copy" stream
- embeddedStream->incRef();
+ embeddedStreamObject = embedded.copy();
}
}
@@ -346,14 +337,32 @@ MediaRendition::MediaRendition(Object* obj) {
}
}
+MediaRendition::MediaRendition(const MediaRendition &other) {
+ ok = other.ok;
+ MH = other.MH;
+ BE = other.BE;
+ isEmbedded = other.isEmbedded;
+ embeddedStreamObject = other.embeddedStreamObject.copy();
+
+ if (other.contentType)
+ contentType = other.contentType->copy();
+ else
+ contentType = nullptr;
+
+ if (other.fileName)
+ fileName = other.fileName->copy();
+ else
+ fileName = nullptr;
+}
+
void MediaRendition::outputToFile(FILE* fp) {
if (!isEmbedded)
return;
- embeddedStream->reset();
+ embeddedStreamObject.streamReset();
while (1) {
- int c = embeddedStream->getChar();
+ int c = embeddedStreamObject.streamGetChar();
if (c == EOF)
break;
@@ -362,19 +371,9 @@ void MediaRendition::outputToFile(FILE* fp) {
}
-MediaRendition *MediaRendition::copy() {
- // call default copy constructor
- MediaRendition* new_media = new MediaRendition(*this);
-
- if (contentType)
- new_media->contentType = contentType->copy();
- if (fileName)
- new_media->fileName = fileName->copy();
-
- if (new_media->embeddedStream)
- new_media->embeddedStream->incRef();
-
- return new_media;
+MediaRendition* MediaRendition::copy()
+{
+ return new MediaRendition(*this);
}
// TODO: SelectorRendition