[SVN-Commit] r1488 - in trunk/www: firefox firefox-nightly firefox-nightly/files firefox/files linux-tor-browser seamonkey seamonkey/files
svn-freebsd-gecko at chruetertee.ch
svn-freebsd-gecko at chruetertee.ch
Tue Feb 11 03:16:03 UTC 2014
Author: jbeich
Date: Tue Feb 11 03:15:48 2014
New Revision: 1488
Log:
update
Added:
trunk/www/seamonkey/files/patch-mailnews-extensions-enigmail-config-getOsTarget.pl
Deleted:
trunk/www/firefox-nightly/files/patch-bug970031
Modified:
trunk/www/firefox-nightly/Makefile.hgrev
trunk/www/firefox-nightly/distinfo
trunk/www/firefox-nightly/files/patch-bug806917
trunk/www/firefox/Makefile
trunk/www/firefox/distinfo
trunk/www/firefox/files/patch-bug806917
trunk/www/linux-tor-browser/Makefile
trunk/www/linux-tor-browser/distinfo
trunk/www/seamonkey/Makefile
trunk/www/seamonkey/distinfo
Modified: trunk/www/firefox-nightly/Makefile.hgrev
==============================================================================
--- trunk/www/firefox-nightly/Makefile.hgrev Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/firefox-nightly/Makefile.hgrev Tue Feb 11 03:15:48 2014 (r1488)
@@ -1 +1 @@
-HGREV= 167424:1ca0ce406aad
+HGREV= 167979:221df43616ab
Modified: trunk/www/firefox-nightly/distinfo
==============================================================================
--- trunk/www/firefox-nightly/distinfo Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/firefox-nightly/distinfo Tue Feb 11 03:15:48 2014 (r1488)
@@ -1,2 +1,2 @@
-SHA256 (firefox-nightly/1ca0ce406aad.tar.bz2) = 698925f4843b3ae4d940a1c7bd512e01bd13e0d6adc027e023c8441b26926363
-SIZE (firefox-nightly/1ca0ce406aad.tar.bz2) = 135999400
+SHA256 (firefox-nightly/221df43616ab.tar.bz2) = db00823267464793c4de7c82234ed21c4044582f35e5021f14dd3030f7e86f22
+SIZE (firefox-nightly/221df43616ab.tar.bz2) = 135901109
Modified: trunk/www/firefox-nightly/files/patch-bug806917
==============================================================================
--- trunk/www/firefox-nightly/files/patch-bug806917 Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/firefox-nightly/files/patch-bug806917 Tue Feb 11 03:15:48 2014 (r1488)
@@ -22,7 +22,7 @@
index 9776b8d..0b1698d 100644
--- configure.in
+++ configure.in
-@@ -3982,6 +3982,7 @@ MOZ_SAMPLE_TYPE_FLOAT32=
+@@ -3988,6 +3988,7 @@ MOZ_SAMPLE_TYPE_FLOAT32=
MOZ_SAMPLE_TYPE_S16=
MOZ_OPUS=1
MOZ_WEBM=1
@@ -30,7 +30,7 @@
MOZ_DIRECTSHOW=
MOZ_WMF=
MOZ_FMP4=
-@@ -5624,44 +5625,59 @@ WINNT|Darwin|Android)
+@@ -5634,44 +5635,59 @@ WINNT|Darwin|Android)
;;
*)
MOZ_GSTREAMER=1
@@ -119,7 +119,7 @@
index 0000000..69d0385
--- /dev/null
+++ content/media/gstreamer/GStreamerAllocator.cpp
-@@ -0,0 +1,195 @@
+@@ -0,0 +1,197 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
@@ -178,9 +178,7 @@
+ mem->image->Release();
+
+ ImageContainer* container = ((MozGfxMemoryAllocator*) mem->memory.allocator)->reader->GetImageContainer();
-+ mem->image =
-+ reinterpret_cast<PlanarYCbCrImage*>(
-+ container->CreateImage(ImageFormat::PLANAR_YCBCR).get());
++ mem->image = reinterpret_cast<PlanarYCbCrImage*>(container->CreateImage(ImageFormat::PLANAR_YCBCR).get());
+ mem->data = mem->image->AllocateAndGetNewBuffer(mem->memory.size);
+}
+
@@ -190,10 +188,10 @@
+{
+ MozGfxMemory* mem = g_slice_new (MozGfxMemory);
+ gsize maxsize = aSize + aParams->prefix + aParams->padding;
-+ gst_memory_init (GST_MEMORY_CAST (mem),
-+ (GstMemoryFlags)aParams->flags,
-+ aAllocator, NULL, maxsize, aParams->align,
-+ aParams->prefix, aSize);
++ gst_memory_init(GST_MEMORY_CAST (mem),
++ (GstMemoryFlags)aParams->flags,
++ aAllocator, NULL, maxsize, aParams->align,
++ aParams->prefix, aSize);
+ mem->image = NULL;
+ moz_gfx_memory_reset(mem);
+
@@ -218,6 +216,10 @@
+static gpointer
+moz_gfx_memory_map (MozGfxMemory * mem, gsize maxsize, GstMapFlags flags)
+{
++ // check that the allocation didn't fail
++ if (mem->data == nullptr)
++ return nullptr;
++
+ return mem->data + mem->memory.offset;
+}
+
@@ -278,7 +280,7 @@
+}
+
+void
-+moz_gfx_memory_allocator_set_reader(GstAllocator *aAllocator, GStreamerReader* aReader)
++moz_gfx_memory_allocator_set_reader(GstAllocator* aAllocator, GStreamerReader* aReader)
+{
+ MozGfxMemoryAllocator *allocator = (MozGfxMemoryAllocator *) aAllocator;
+ allocator->reader = aReader;
@@ -296,7 +298,7 @@
+moz_gfx_buffer_pool_reset_buffer (GstBufferPool* aPool, GstBuffer* aBuffer)
+{
+ GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0);
-+
++
+ NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator), "Should be a gfx image");
+ moz_gfx_memory_reset((MozGfxMemory *) mem);
+ GST_BUFFER_POOL_CLASS(moz_gfx_buffer_pool_parent_class)->reset_buffer(aPool, aBuffer);
@@ -345,7 +347,7 @@
+
+} // namespace mozilla
+
-+#endif
++#endif
diff --git content/media/gstreamer/GStreamerFormatHelper.cpp content/media/gstreamer/GStreamerFormatHelper.cpp
index be71331..a5e5db8 100644
--- content/media/gstreamer/GStreamerFormatHelper.cpp
@@ -448,7 +450,7 @@
GST_FUNC(LIBGSTREAMER, gst_segment_to_stream_time)
GST_FUNC(LIBGSTREAMER, gst_static_caps_get)
GST_FUNC(LIBGSTREAMER, gst_structure_copy)
-@@ -85,11 +72,82 @@ GST_FUNC(LIBGSTREAMER, gst_structure_get_int)
+@@ -86,11 +73,82 @@ GST_FUNC(LIBGSTREAMER, gst_structure_get_int)
GST_FUNC(LIBGSTREAMER, gst_structure_get_value)
GST_FUNC(LIBGSTREAMER, gst_structure_new)
GST_FUNC(LIBGSTREAMER, gst_util_uint64_scale)
@@ -531,7 +533,7 @@
/*
* Functions that have been defined in the header file. We replace them so that
-@@ -99,6 +157,11 @@ GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps)
+@@ -100,6 +158,11 @@ GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps)
REPLACE_FUNC(gst_buffer_ref);
REPLACE_FUNC(gst_buffer_unref);
REPLACE_FUNC(gst_message_unref);
@@ -669,7 +671,7 @@
index 0000000..fb98bde
--- /dev/null
+++ content/media/gstreamer/GStreamerReader-0.10.cpp
-@@ -0,0 +1,204 @@
+@@ -0,0 +1,200 @@
+#include "nsError.h"
+#include "MediaDecoderStateMachine.h"
+#include "AbstractMediaDecoder.h"
@@ -714,14 +716,10 @@
+{
+ /* allocate an image using the container */
+ ImageContainer* container = mDecoder->GetImageContainer();
-+ if (!container) {
-+ // We don't have an ImageContainer. We probably belong to an <audio>
-+ // element.
-+ return GST_FLOW_NOT_SUPPORTED;
++ if (container == nullptr) {
++ return GST_FLOW_ERROR;
+ }
-+ PlanarYCbCrImage* img =
-+ reinterpret_cast<PlanarYCbCrImage*>(
-+ container->CreateImage(ImageFormat::PLANAR_YCBCR).get());
++ PlanarYCbCrImage* img = reinterpret_cast<PlanarYCbCrImage*>(container->CreateImage(ImageFormat::PLANAR_YCBCR).get());
+ nsRefPtr<PlanarYCbCrImage> image = dont_AddRef(img);
+
+ /* prepare a GstBuffer pointing to the underlying PlanarYCbCrImage buffer */
@@ -792,7 +790,7 @@
+{
+ if (!GST_IS_MOZ_VIDEO_BUFFER (aBuffer))
+ return nullptr;
-+
++
+ nsRefPtr<PlanarYCbCrImage> image;
+ GstMozVideoBufferData* bufferdata = reinterpret_cast<GstMozVideoBufferData*>(gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(aBuffer)));
+ image = bufferdata->mImage;
@@ -890,7 +888,7 @@
#include "VideoUtils.h"
#include "mozilla/dom/TimeRanges.h"
#include "mozilla/Preferences.h"
-@@ -31,14 +33,9 @@ extern PRLogModuleInfo* gMediaDecoderLog;
+@@ -31,14 +33,14 @@ extern PRLogModuleInfo* gMediaDecoderLog;
#define LOG(type, msg)
#endif
@@ -900,13 +898,19 @@
- const VideoData::YCbCrBuffer::Plane& aCrPlane);
-
static const unsigned int MAX_CHANNELS = 4;
- // Let the demuxer work in pull mode for short files
+-// Let the demuxer work in pull mode for short files
-static const int SHORT_FILE_SIZE = 1024 * 1024;
++// Let the demuxer work in pull mode for short files. This used to be a micro
++// optimization to have more accurate durations for ogg files in mochitests.
++// Since as of today we aren't using gstreamer to demux ogg, and having demuxers
++// work in pull mode over http makes them slower (since they really assume
++// near-zero latency in pull mode) set the constant to 0 for now, which
++// effectively disables it.
+static const int SHORT_FILE_SIZE = 0;
// The default resource->Read() size when working in push mode
static const int DEFAULT_SOURCE_READ_SIZE = 50 * 1024;
-@@ -60,6 +57,10 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
+@@ -60,6 +62,10 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
: MediaDecoderReader(aDecoder),
mMP3FrameParser(aDecoder->GetResource()->GetLength()),
mUseParserDuration(false),
@@ -917,7 +921,7 @@
mPlayBin(nullptr),
mBus(nullptr),
mSource(nullptr),
-@@ -72,6 +73,9 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
+@@ -72,6 +78,9 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
mAudioSinkBufferCount(0),
mGstThreadsMonitor("media.gst.threads"),
mReachedEos(false),
@@ -927,7 +931,7 @@
fpsNum(0),
fpsDen(0)
{
-@@ -83,8 +87,12 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
+@@ -83,8 +92,12 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
mSinkCallbacks.eos = GStreamerReader::EosCb;
mSinkCallbacks.new_preroll = GStreamerReader::NewPrerollCb;
@@ -940,37 +944,34 @@
gst_segment_init(&mVideoSegment, GST_FORMAT_UNDEFINED);
gst_segment_init(&mAudioSegment, GST_FORMAT_UNDEFINED);
-@@ -108,65 +116,67 @@ GStreamerReader::~GStreamerReader()
+@@ -108,65 +121,59 @@ GStreamerReader::~GStreamerReader()
mAudioAppSink = nullptr;
gst_object_unref(mBus);
mBus = nullptr;
+#if GST_VERSION_MAJOR >= 1
+ g_object_unref(mAllocator);
+ g_object_unref(mBufferPool);
-+#endif
++#endif
}
}
--
-+
+
nsresult GStreamerReader::Init(MediaDecoderReader* aCloneDonor)
{
-+#if 0
- GError* error = nullptr;
- if (!gst_init_check(0, 0, &error)) {
- LOG(PR_LOG_ERROR, ("gst initialization failed: %s", error->message));
- g_error_free(error);
- return NS_ERROR_FAILURE;
- }
-+#endif
+- GError* error = nullptr;
+- if (!gst_init_check(0, 0, &error)) {
+- LOG(PR_LOG_ERROR, ("gst initialization failed: %s", error->message));
+- g_error_free(error);
+- return NS_ERROR_FAILURE;
+- }
+ GStreamerFormatHelper::Instance();
-
++
+#if GST_VERSION_MAJOR >= 1
-+ mAllocator = static_cast<GstAllocator*>(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, NULL));
++ mAllocator = static_cast<GstAllocator*>(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, nullptr));
+ moz_gfx_memory_allocator_set_reader(mAllocator, this);
+
-+ mBufferPool = static_cast<GstBufferPool*>(g_object_new(GST_TYPE_MOZ_GFX_BUFFER_POOL, NULL));
++ mBufferPool = static_cast<GstBufferPool*>(g_object_new(GST_TYPE_MOZ_GFX_BUFFER_POOL, nullptr));
+#endif
-+
+
+#if GST_VERSION_MAJOR >= 1
+ mPlayBin = gst_element_factory_make("playbin", nullptr);
+#else
@@ -1030,17 +1031,16 @@
+ gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks,
+ (gpointer) this, nullptr);
gst_app_sink_set_callbacks(mAudioAppSink, &mSinkCallbacks,
-- (gpointer) this, nullptr);
+ (gpointer) this, nullptr);
- sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink");
- gst_pad_add_event_probe(sinkpad,
- G_CALLBACK(&GStreamerReader::EventProbeCb), this);
- gst_object_unref(sinkpad);
-+ (gpointer) this, nullptr);
+ InstallPadCallbacks();
g_object_set(mPlayBin, "uri", "appsrc://",
"video-sink", mVideoSink,
-@@ -316,13 +326,13 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -318,13 +325,13 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
/* Little trick: set the target caps to "skip" so that playbin2 fails to
* find a decoder for the stream we want to skip.
*/
@@ -1056,7 +1056,7 @@
gst_element_set_state(mPlayBin, GST_STATE_PAUSED);
/* Wait for ASYNC_DONE, which is emitted when the pipeline is built,
-@@ -343,6 +353,7 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -345,6 +352,7 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
gst_message_unref(message);
ret = NS_ERROR_FAILURE;
} else {
@@ -1064,7 +1064,7 @@
gst_message_unref(message);
ret = NS_OK;
break;
-@@ -358,16 +369,20 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -360,16 +368,20 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
/* FIXME: workaround for a bug in matroskademux. This seek makes matroskademux
* parse the index */
@@ -1083,11 +1083,11 @@
return NS_ERROR_FAILURE;
}
+ } else {
-+ LOG(PR_LOG_DEBUG, ("matroskademux seek hack failed (non fatal)"));
++ LOG(PR_LOG_DEBUG, ("matroskademux seek hack failed (non fatal)"));
}
bool isMP3 = mDecoder->GetResource()->GetContentType().EqualsASCII(AUDIO_MP3);
-@@ -377,7 +392,6 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -379,7 +391,6 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
/* report the duration */
gint64 duration;
@@ -1095,7 +1095,7 @@
if (isMP3 && mMP3FrameParser.IsMP3()) {
// The MP3FrameParser has reported a duration; use that over the gstreamer
-@@ -386,18 +400,25 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -388,18 +399,25 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
mUseParserDuration = true;
mLastParserDuration = mMP3FrameParser.GetDuration();
mDecoder->SetMediaDuration(mLastParserDuration);
@@ -1132,19 +1132,19 @@
}
int n_video = 0, n_audio = 0;
-@@ -410,7 +431,11 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -412,7 +430,11 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
*aTags = nullptr;
// Watch the pipeline for fatal errors
+#if GST_VERSION_MAJOR >= 1
-+ gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this, NULL);
++ gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this, nullptr);
+#else
gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this);
+#endif
/* set the pipeline to PLAYING so that it starts decoding and queueing data in
* the appsinks */
-@@ -424,19 +449,35 @@ nsresult GStreamerReader::CheckSupportedFormats()
+@@ -426,19 +448,35 @@ nsresult GStreamerReader::CheckSupportedFormats()
bool done = false;
bool unsupported = false;
@@ -1154,7 +1154,7 @@
+ GstIteratorResult res;
GstElement* element;
- GstIteratorResult res = gst_iterator_next(it, (void **)&element);
-+
++
+#if GST_VERSION_MAJOR >= 1
+ GValue value = {0,};
+ res = gst_iterator_next(it, &value);
@@ -1163,8 +1163,7 @@
+#endif
switch(res) {
case GST_ITERATOR_OK:
-- {
-+ {
+ {
+#if GST_VERSION_MAJOR >= 1
+ element = GST_ELEMENT (g_value_get_object (&value));
+#endif
@@ -1185,7 +1184,7 @@
if (caps) {
/* check for demuxers but ignore elements like id3demux */
-@@ -451,7 +492,11 @@ nsresult GStreamerReader::CheckSupportedFormats()
+@@ -453,7 +491,11 @@ nsresult GStreamerReader::CheckSupportedFormats()
}
}
@@ -1197,7 +1196,7 @@
done = unsupported;
break;
}
-@@ -475,16 +520,23 @@ nsresult GStreamerReader::ResetDecode()
+@@ -477,6 +519,8 @@ nsresult GStreamerReader::ResetDecode()
{
nsresult res = NS_OK;
@@ -1206,23 +1205,33 @@
if (NS_FAILED(MediaDecoderReader::ResetDecode())) {
res = NS_ERROR_FAILURE;
}
--
-+
- mVideoQueue.Reset();
- mAudioQueue.Reset();
-
+@@ -487,6 +531,11 @@ nsresult GStreamerReader::ResetDecode()
mVideoSinkBufferCount = 0;
mAudioSinkBufferCount = 0;
mReachedEos = false;
+#if GST_VERSION_MAJOR >= 1
+ mConfigureAlignment = true;
+#endif
-+
++
+ LOG(PR_LOG_DEBUG, ("reset decode done"));
return res;
}
-@@ -526,17 +578,31 @@ bool GStreamerReader::DecodeAudioData()
+@@ -510,11 +559,11 @@ bool GStreamerReader::DecodeAudioData()
+ /* We have nothing decoded so it makes no sense to return to the state machine
+ * as it will call us back immediately, we'll return again and so on, wasting
+ * CPU cycles for no job done. So, block here until there is either video or
+- * audio data available
++ * audio data available
+ */
+ mon.Wait();
+ if (!mAudioSinkBufferCount) {
+- /* There is still no audio data available, so either there is video data or
++ /* There is still no audio data available, so either there is video data or
+ * something else has happened (Eos, etc...). Return to the state machine
+ * to process it.
+ */
+@@ -526,17 +575,34 @@ bool GStreamerReader::DecodeAudioData()
}
}
@@ -1244,44 +1253,57 @@
timestamp = GST_TIME_AS_USECONDS(timestamp);
int64_t offset = GST_BUFFER_OFFSET(buffer);
++ guint8* data;
+#if GST_VERSION_MAJOR >= 1
+ GstMapInfo info;
+ gst_buffer_map(buffer, &info, GST_MAP_READ);
+ unsigned int size = info.size;
++ data = info.data;
+#else
unsigned int size = GST_BUFFER_SIZE(buffer);
++ data = GST_BUFFER_DATA(buffer);
+#endif
int32_t frames = (size / sizeof(AudioDataValue)) / mInfo.mAudio.mChannels;
typedef AudioCompactor::NativeCopy GstCopy;
-@@ -545,16 +611,24 @@ bool GStreamerReader::DecodeAudioData()
+@@ -545,16 +611,20 @@ bool GStreamerReader::DecodeAudioData()
mInfo.mAudio.mRate,
frames,
mInfo.mAudio.mChannels,
-+#if GST_VERSION_MAJOR >= 1
-+ GstCopy(info.data,
-+ info.size,
-+#else
- GstCopy(GST_BUFFER_DATA(buffer),
+- GstCopy(GST_BUFFER_DATA(buffer),
++ GstCopy(data,
size,
-+#endif
mInfo.mAudio.mChannels));
+#if GST_VERSION_MAJOR >= 1
+ gst_buffer_unmap(buffer, &info);
+#endif
++
gst_buffer_unref(buffer);
return true;
}
--
-+
+
bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
- int64_t aTimeThreshold)
+ int64_t aTimeThreshold)
{
NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-@@ -589,11 +660,17 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+@@ -573,11 +643,11 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+ /* We have nothing decoded so it makes no sense to return to the state machine
+ * as it will call us back immediately, we'll return again and so on, wasting
+ * CPU cycles for no job done. So, block here until there is either video or
+- * audio data available
++ * audio data available
+ */
+ mon.Wait();
+ if (!mVideoSinkBufferCount) {
+- /* There is still no video data available, so either there is audio data or
++ /* There is still no video data available, so either there is audio data or
+ * something else has happened (Eos, etc...). Return to the state machine
+ * to process it
+ */
+@@ -591,11 +661,17 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
mDecoder->NotifyDecodedFrames(0, 1);
@@ -1300,7 +1322,7 @@
if ((aKeyFrameSkip && !isKeyframe)) {
gst_buffer_unref(buffer);
return true;
-@@ -609,10 +686,18 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+@@ -611,10 +687,18 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
"frame has invalid timestamp");
timestamp = GST_TIME_AS_USECONDS(timestamp);
@@ -1320,7 +1342,7 @@
gst_buffer_unref(buffer);
return true;
}
-@@ -621,61 +706,36 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+@@ -623,61 +707,36 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
/* no more frames */
return false;
@@ -1346,7 +1368,7 @@
+ gst_structure_free(config);
+ mConfigureAlignment = false;
+ }
-+#endif
++#endif
+ nsRefPtr<PlanarYCbCrImage> image = GetImageFromBuffer(buffer);
if (!image) {
@@ -1400,7 +1422,7 @@
gst_buffer_unref(buffer);
return true;
-@@ -698,6 +758,10 @@ nsresult GStreamerReader::Seek(int64_t aTarget,
+@@ -700,6 +759,10 @@ nsresult GStreamerReader::Seek(int64_t aTarget,
return NS_ERROR_FAILURE;
}
LOG(PR_LOG_DEBUG, ("seek succeeded"));
@@ -1411,7 +1433,7 @@
return DecodeToTarget(aTarget);
}
-@@ -709,7 +773,9 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
+@@ -711,7 +774,9 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
return NS_OK;
}
@@ -1421,7 +1443,7 @@
MediaResource* resource = mDecoder->GetResource();
nsTArray<MediaByteRange> ranges;
resource->GetCachedRanges(ranges);
-@@ -731,12 +797,21 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
+@@ -733,12 +798,21 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
int64_t endOffset = ranges[index].mEnd;
gint64 startTime, endTime;
@@ -1443,7 +1465,7 @@
double start = (double) GST_TIME_AS_USECONDS (startTime) / GST_MSECOND;
double end = (double) GST_TIME_AS_USECONDS (endTime) / GST_MSECOND;
-@@ -755,7 +830,13 @@ void GStreamerReader::ReadAndPushData(guint aLength)
+@@ -757,7 +831,13 @@ void GStreamerReader::ReadAndPushData(guint aLength)
nsresult rv = NS_OK;
GstBuffer* buffer = gst_buffer_new_and_alloc(aLength);
@@ -1457,7 +1479,7 @@
uint32_t size = 0, bytesRead = 0;
while(bytesRead < aLength) {
rv = resource->Read(reinterpret_cast<char*>(data + bytesRead),
-@@ -766,14 +847,19 @@ void GStreamerReader::ReadAndPushData(guint aLength)
+@@ -768,14 +848,19 @@ void GStreamerReader::ReadAndPushData(guint aLength)
bytesRead += size;
}
@@ -1478,7 +1500,7 @@
/* If we read less than what we wanted, we reached the end */
gst_app_src_end_of_stream(mSource);
}
-@@ -786,8 +872,13 @@ int64_t GStreamerReader::QueryDuration()
+@@ -788,8 +873,13 @@ int64_t GStreamerReader::QueryDuration()
gint64 duration = 0;
GstFormat format = GST_FORMAT_TIME;
@@ -1492,7 +1514,7 @@
if (format == GST_FORMAT_TIME) {
LOG(PR_LOG_DEBUG, ("pipeline duration %" GST_TIME_FORMAT,
GST_TIME_ARGS (duration)));
-@@ -868,109 +962,6 @@ gboolean GStreamerReader::SeekData(GstAppSrc* aSrc, guint64 aOffset)
+@@ -868,109 +958,6 @@ gboolean GStreamerReader::SeekData(GstAppSrc* aSrc, guint64 aOffset)
return NS_SUCCEEDED(rv);
}
@@ -1602,7 +1624,7 @@
GstFlowReturn GStreamerReader::NewPrerollCb(GstAppSink* aSink,
gpointer aUserData)
{
-@@ -979,8 +973,12 @@ void GStreamerReader::AudioPreroll()
+@@ -987,8 +974,12 @@ void GStreamerReader::AudioPreroll()
{
/* The first audio buffer has reached the audio sink. Get rate and channels */
LOG(PR_LOG_DEBUG, ("Audio preroll"));
@@ -1616,7 +1638,7 @@
GstStructure* s = gst_caps_get_structure(caps, 0);
mInfo.mAudio.mRate = mInfo.mAudio.mChannels = 0;
gst_structure_get_int(s, "rate", (gint*) &mInfo.mAudio.mRate);
-@@ -998,9 +996,18 @@ void GStreamerReader::VideoPreroll()
+@@ -1006,9 +997,18 @@ void GStreamerReader::VideoPreroll()
{
/* The first video buffer has reached the video sink. Get width and height */
LOG(PR_LOG_DEBUG, ("Video preroll"));
@@ -1636,15 +1658,15 @@
GstStructure* structure = gst_caps_get_structure(caps, 0);
gst_structure_get_fraction(structure, "framerate", &fpsNum, &fpsDen);
NS_ASSERTION(mPicture.width && mPicture.height, "invalid video resolution");
-@@ -1029,6 +1036,7 @@ void GStreamerReader::NewVideoBuffer()
+@@ -1037,6 +1037,7 @@ void GStreamerReader::NewVideoBuffer()
/* We have a new video buffer queued in the video sink. Increment the counter
* and notify the decode thread potentially blocked in DecodeVideoFrame
*/
-+
++
mDecoder->NotifyDecodedFrames(1, 0);
mVideoSinkBufferCount++;
mon.NotifyAll();
-@@ -1095,5 +1103,199 @@ void GStreamerReader::NotifyDataArrived(const char *aBuffer,
+@@ -1173,5 +1174,199 @@ void GStreamerReader::NotifyDataArrived(const char *aBuffer,
}
}
@@ -1666,7 +1688,7 @@
+ format = "S16BE";
+#endif
+#endif
-+ gst_caps_set_simple(caps, "format", G_TYPE_STRING, format, NULL);
++ gst_caps_set_simple(caps, "format", G_TYPE_STRING, format, nullptr);
+
+ return caps;
+}
@@ -1765,9 +1787,9 @@
+ gst_query_parse_allocation(query, &caps, &need_pool);
+ gst_video_info_init(&info);
+ gst_video_info_from_caps(&info, caps);
-+ gst_query_add_allocation_param(query, mAllocator, NULL);
++ gst_query_add_allocation_param(query, mAllocator, nullptr);
+ gst_query_add_allocation_pool(query, mBufferPool, info.size, 0, 0);
-+ gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, NULL);
++ gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, nullptr);
+ break;
+ default:
+ break;
@@ -1822,12 +1844,12 @@
+
+ return image;
+}
-+
++
+void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer,
+ GstBuffer** aOutBuffer,
+ nsRefPtr<PlanarYCbCrImage> &image)
+{
-+ *aOutBuffer = gst_buffer_new_allocate(mAllocator, gst_buffer_get_size(aBuffer), NULL);
++ *aOutBuffer = gst_buffer_new_allocate(mAllocator, gst_buffer_get_size(aBuffer), nullptr);
+ GstMemory *mem = gst_buffer_peek_memory(*aOutBuffer, 0);
+ GstMapInfo map_info;
+ gst_memory_map(mem, &map_info, GST_MAP_WRITE);
@@ -1924,7 +1946,7 @@
/* Called when the pipeline is prerolled, that is when at start or after a
* seek, the first audio and video buffers are queued in the sinks.
-@@ -150,6 +168,11 @@ private:
+@@ -167,6 +185,11 @@ private:
bool mUseParserDuration;
int64_t mLastParserDuration;
@@ -1936,7 +1958,7 @@
GstElement* mPlayBin;
GstBus* mBus;
GstAppSrc* mSource;
-@@ -180,6 +203,9 @@ private:
+@@ -197,6 +220,9 @@ private:
* DecodeAudioData and DecodeVideoFrame should not expect any more data
*/
bool mReachedEos;
@@ -1975,7 +1997,7 @@
index 6e39753..3c8c3b9 100644
--- content/media/test/manifest.js
+++ content/media/test/manifest.js
-@@ -364,9 +364,9 @@ var gUnseekableTests = [
+@@ -365,9 +365,9 @@ var gUnseekableTests = [
{ name:"bogus.duh", type:"bogus/duh"}
];
// Unfortunately big-buck-bunny-unseekable.mp4 is doesn't play on Windows 7, so
Deleted: trunk/www/firefox-nightly/files/patch-bug970031
==============================================================================
--- trunk/www/firefox-nightly/files/patch-bug970031 Tue Feb 11 03:15:48 2014 (r1487)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,13 +0,0 @@
-diff --git xpcom/reflect/xptcall/src/md/unix/moz.build xpcom/reflect/xptcall/src/md/unix/moz.build
-index 5f88066..bd2a94f 100644
---- xpcom/reflect/xptcall/src/md/unix/moz.build
-+++ xpcom/reflect/xptcall/src/md/unix/moz.build
-@@ -256,7 +256,7 @@ if CONFIG['OS_ARCH'] == 'OpenBSD' and CONFIG['OS_TEST'] == 'sparc':
- 'xptcstubs_sparc_openbsd.cpp',
- ]
-
--if CONFIG['OS_ARCH'] == 'OpenBSD' and CONFIG['OS_TEST'] == 'sparc64':
-+if CONFIG['OS_ARCH'] in ('OpenBSD', 'FreeBSD') and CONFIG['OS_TEST'] == 'sparc64':
- SOURCES += [
- 'xptcinvoke_asm_sparc64_openbsd.s',
- 'xptcinvoke_sparc64_openbsd.cpp',
Modified: trunk/www/firefox/Makefile
==============================================================================
--- trunk/www/firefox/Makefile Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/firefox/Makefile Tue Feb 11 03:15:48 2014 (r1488)
@@ -2,7 +2,7 @@
# $FreeBSD: head/www/firefox/Makefile 339634 2014-01-13 21:00:02Z rene $
PORTNAME= firefox
-DISTVERSION= 28.0b1
+DISTVERSION= 28.0b2
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
Modified: trunk/www/firefox/distinfo
==============================================================================
--- trunk/www/firefox/distinfo Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/firefox/distinfo Tue Feb 11 03:15:48 2014 (r1488)
@@ -1,2 +1,2 @@
-SHA256 (firefox-28.0b1.source.tar.bz2) = e791f62fe99375a0a6087c2390979d85ca9f7b0ab11d83ce31525f522c1ee9d3
-SIZE (firefox-28.0b1.source.tar.bz2) = 134830833
+SHA256 (firefox-28.0b2.source.tar.bz2) = ba1bf5ab94c6d7c4c113328f966461cabd9ce96882285ba0c971f6e4dd2e40e2
+SIZE (firefox-28.0b2.source.tar.bz2) = 134778022
Modified: trunk/www/firefox/files/patch-bug806917
==============================================================================
--- trunk/www/firefox/files/patch-bug806917 Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/firefox/files/patch-bug806917 Tue Feb 11 03:15:48 2014 (r1488)
@@ -22,7 +22,7 @@
index 9776b8d..0b1698d 100644
--- configure.in
+++ configure.in
-@@ -3982,6 +3982,7 @@ MOZ_SAMPLE_TYPE_FLOAT32=
+@@ -3955,6 +3955,7 @@ MOZ_SAMPLE_TYPE_FLOAT32=
MOZ_SAMPLE_TYPE_S16=
MOZ_OPUS=1
MOZ_WEBM=1
@@ -118,7 +118,7 @@
index 0000000..69d0385
--- /dev/null
+++ content/media/gstreamer/GStreamerAllocator.cpp
-@@ -0,0 +1,194 @@
+@@ -0,0 +1,198 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
@@ -188,10 +188,10 @@
+{
+ MozGfxMemory* mem = g_slice_new (MozGfxMemory);
+ gsize maxsize = aSize + aParams->prefix + aParams->padding;
-+ gst_memory_init (GST_MEMORY_CAST (mem),
-+ (GstMemoryFlags)aParams->flags,
-+ aAllocator, NULL, maxsize, aParams->align,
-+ aParams->prefix, aSize);
++ gst_memory_init(GST_MEMORY_CAST (mem),
++ (GstMemoryFlags)aParams->flags,
++ aAllocator, NULL, maxsize, aParams->align,
++ aParams->prefix, aSize);
+ mem->image = NULL;
+ moz_gfx_memory_reset(mem);
+
@@ -216,6 +216,10 @@
+static gpointer
+moz_gfx_memory_map (MozGfxMemory * mem, gsize maxsize, GstMapFlags flags)
+{
++ // check that the allocation didn't fail
++ if (mem->data == nullptr)
++ return nullptr;
++
+ return mem->data + mem->memory.offset;
+}
+
@@ -276,7 +280,7 @@
+}
+
+void
-+moz_gfx_memory_allocator_set_reader(GstAllocator *aAllocator, GStreamerReader* aReader)
++moz_gfx_memory_allocator_set_reader(GstAllocator* aAllocator, GStreamerReader* aReader)
+{
+ MozGfxMemoryAllocator *allocator = (MozGfxMemoryAllocator *) aAllocator;
+ allocator->reader = aReader;
@@ -294,7 +298,7 @@
+moz_gfx_buffer_pool_reset_buffer (GstBufferPool* aPool, GstBuffer* aBuffer)
+{
+ GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0);
-+
++
+ NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator), "Should be a gfx image");
+ moz_gfx_memory_reset((MozGfxMemory *) mem);
+ GST_BUFFER_POOL_CLASS(moz_gfx_buffer_pool_parent_class)->reset_buffer(aPool, aBuffer);
@@ -343,7 +347,7 @@
+
+} // namespace mozilla
+
-+#endif
++#endif
diff --git content/media/gstreamer/GStreamerFormatHelper.cpp content/media/gstreamer/GStreamerFormatHelper.cpp
index be71331..a5e5db8 100644
--- content/media/gstreamer/GStreamerFormatHelper.cpp
@@ -783,7 +787,7 @@
+{
+ if (!GST_IS_MOZ_VIDEO_BUFFER (aBuffer))
+ return nullptr;
-+
++
+ nsRefPtr<PlanarYCbCrImage> image;
+ GstMozVideoBufferData* bufferdata = reinterpret_cast<GstMozVideoBufferData*>(gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(aBuffer)));
+ image = bufferdata->mImage;
@@ -881,7 +885,7 @@
#include "VideoUtils.h"
#include "mozilla/dom/TimeRanges.h"
#include "mozilla/Preferences.h"
-@@ -31,14 +33,9 @@ extern PRLogModuleInfo* gMediaDecoderLog;
+@@ -31,14 +33,14 @@ extern PRLogModuleInfo* gMediaDecoderLog;
#define LOG(type, msg)
#endif
@@ -891,13 +895,19 @@
- const VideoData::YCbCrBuffer::Plane& aCrPlane);
-
static const unsigned int MAX_CHANNELS = 4;
- // Let the demuxer work in pull mode for short files
+-// Let the demuxer work in pull mode for short files
-static const int SHORT_FILE_SIZE = 1024 * 1024;
++// Let the demuxer work in pull mode for short files. This used to be a micro
++// optimization to have more accurate durations for ogg files in mochitests.
++// Since as of today we aren't using gstreamer to demux ogg, and having demuxers
++// work in pull mode over http makes them slower (since they really assume
++// near-zero latency in pull mode) set the constant to 0 for now, which
++// effectively disables it.
+static const int SHORT_FILE_SIZE = 0;
// The default resource->Read() size when working in push mode
static const int DEFAULT_SOURCE_READ_SIZE = 50 * 1024;
-@@ -60,6 +57,10 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
+@@ -60,6 +62,10 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
: MediaDecoderReader(aDecoder),
mMP3FrameParser(aDecoder->GetResource()->GetLength()),
mUseParserDuration(false),
@@ -908,7 +918,7 @@
mPlayBin(nullptr),
mBus(nullptr),
mSource(nullptr),
-@@ -72,6 +73,9 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
+@@ -72,6 +78,9 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
mAudioSinkBufferCount(0),
mGstThreadsMonitor("media.gst.threads"),
mReachedEos(false),
@@ -918,7 +928,7 @@
fpsNum(0),
fpsDen(0)
{
-@@ -83,8 +87,12 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
+@@ -83,8 +92,12 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
mSinkCallbacks.eos = GStreamerReader::EosCb;
mSinkCallbacks.new_preroll = GStreamerReader::NewPrerollCb;
@@ -931,37 +941,34 @@
gst_segment_init(&mVideoSegment, GST_FORMAT_UNDEFINED);
gst_segment_init(&mAudioSegment, GST_FORMAT_UNDEFINED);
-@@ -108,65 +116,67 @@ GStreamerReader::~GStreamerReader()
+@@ -108,65 +121,59 @@ GStreamerReader::~GStreamerReader()
mAudioAppSink = nullptr;
gst_object_unref(mBus);
mBus = nullptr;
+#if GST_VERSION_MAJOR >= 1
+ g_object_unref(mAllocator);
+ g_object_unref(mBufferPool);
-+#endif
++#endif
}
}
--
-+
+
nsresult GStreamerReader::Init(MediaDecoderReader* aCloneDonor)
{
-+#if 0
- GError* error = nullptr;
- if (!gst_init_check(0, 0, &error)) {
- LOG(PR_LOG_ERROR, ("gst initialization failed: %s", error->message));
- g_error_free(error);
- return NS_ERROR_FAILURE;
- }
-+#endif
+- GError* error = nullptr;
+- if (!gst_init_check(0, 0, &error)) {
+- LOG(PR_LOG_ERROR, ("gst initialization failed: %s", error->message));
+- g_error_free(error);
+- return NS_ERROR_FAILURE;
+- }
+ GStreamerFormatHelper::Instance();
-
++
+#if GST_VERSION_MAJOR >= 1
-+ mAllocator = static_cast<GstAllocator*>(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, NULL));
++ mAllocator = static_cast<GstAllocator*>(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, nullptr));
+ moz_gfx_memory_allocator_set_reader(mAllocator, this);
+
-+ mBufferPool = static_cast<GstBufferPool*>(g_object_new(GST_TYPE_MOZ_GFX_BUFFER_POOL, NULL));
++ mBufferPool = static_cast<GstBufferPool*>(g_object_new(GST_TYPE_MOZ_GFX_BUFFER_POOL, nullptr));
+#endif
-+
+
+#if GST_VERSION_MAJOR >= 1
+ mPlayBin = gst_element_factory_make("playbin", nullptr);
+#else
@@ -1021,17 +1028,16 @@
+ gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks,
+ (gpointer) this, nullptr);
gst_app_sink_set_callbacks(mAudioAppSink, &mSinkCallbacks,
-- (gpointer) this, nullptr);
+ (gpointer) this, nullptr);
- sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink");
- gst_pad_add_event_probe(sinkpad,
- G_CALLBACK(&GStreamerReader::EventProbeCb), this);
- gst_object_unref(sinkpad);
-+ (gpointer) this, nullptr);
+ InstallPadCallbacks();
g_object_set(mPlayBin, "uri", "appsrc://",
"video-sink", mVideoSink,
-@@ -316,13 +326,13 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -316,13 +323,13 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
/* Little trick: set the target caps to "skip" so that playbin2 fails to
* find a decoder for the stream we want to skip.
*/
@@ -1047,7 +1053,7 @@
gst_element_set_state(mPlayBin, GST_STATE_PAUSED);
/* Wait for ASYNC_DONE, which is emitted when the pipeline is built,
-@@ -343,6 +353,7 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -343,6 +350,7 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
gst_message_unref(message);
ret = NS_ERROR_FAILURE;
} else {
@@ -1055,7 +1061,7 @@
gst_message_unref(message);
ret = NS_OK;
break;
-@@ -358,16 +369,20 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -358,16 +366,20 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
/* FIXME: workaround for a bug in matroskademux. This seek makes matroskademux
* parse the index */
@@ -1074,11 +1080,11 @@
return NS_ERROR_FAILURE;
}
+ } else {
-+ LOG(PR_LOG_DEBUG, ("matroskademux seek hack failed (non fatal)"));
++ LOG(PR_LOG_DEBUG, ("matroskademux seek hack failed (non fatal)"));
}
bool isMP3 = mDecoder->GetResource()->GetContentType().EqualsASCII(AUDIO_MP3);
-@@ -377,7 +392,6 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -377,7 +389,6 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
/* report the duration */
gint64 duration;
@@ -1086,7 +1092,7 @@
if (isMP3 && mMP3FrameParser.IsMP3()) {
// The MP3FrameParser has reported a duration; use that over the gstreamer
-@@ -386,18 +400,25 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -386,18 +397,25 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
mUseParserDuration = true;
mLastParserDuration = mMP3FrameParser.GetDuration();
mDecoder->SetMediaDuration(mLastParserDuration);
@@ -1123,19 +1129,19 @@
}
int n_video = 0, n_audio = 0;
-@@ -410,7 +431,11 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
+@@ -410,7 +428,11 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
*aTags = nullptr;
// Watch the pipeline for fatal errors
+#if GST_VERSION_MAJOR >= 1
-+ gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this, NULL);
++ gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this, nullptr);
+#else
gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this);
+#endif
/* set the pipeline to PLAYING so that it starts decoding and queueing data in
* the appsinks */
-@@ -424,19 +449,35 @@ nsresult GStreamerReader::CheckSupportedFormats()
+@@ -424,19 +446,35 @@ nsresult GStreamerReader::CheckSupportedFormats()
bool done = false;
bool unsupported = false;
@@ -1145,7 +1151,7 @@
+ GstIteratorResult res;
GstElement* element;
- GstIteratorResult res = gst_iterator_next(it, (void **)&element);
-+
++
+#if GST_VERSION_MAJOR >= 1
+ GValue value = {0,};
+ res = gst_iterator_next(it, &value);
@@ -1154,8 +1160,7 @@
+#endif
switch(res) {
case GST_ITERATOR_OK:
-- {
-+ {
+ {
+#if GST_VERSION_MAJOR >= 1
+ element = GST_ELEMENT (g_value_get_object (&value));
+#endif
@@ -1176,7 +1181,7 @@
if (caps) {
/* check for demuxers but ignore elements like id3demux */
-@@ -451,7 +492,11 @@ nsresult GStreamerReader::CheckSupportedFormats()
+@@ -451,7 +489,11 @@ nsresult GStreamerReader::CheckSupportedFormats()
}
}
@@ -1188,7 +1193,7 @@
done = unsupported;
break;
}
-@@ -475,16 +520,23 @@ nsresult GStreamerReader::ResetDecode()
+@@ -475,6 +517,8 @@ nsresult GStreamerReader::ResetDecode()
{
nsresult res = NS_OK;
@@ -1197,23 +1202,33 @@
if (NS_FAILED(MediaDecoderReader::ResetDecode())) {
res = NS_ERROR_FAILURE;
}
--
-+
- mVideoQueue.Reset();
- mAudioQueue.Reset();
-
+@@ -485,6 +529,11 @@ nsresult GStreamerReader::ResetDecode()
mVideoSinkBufferCount = 0;
mAudioSinkBufferCount = 0;
mReachedEos = false;
+#if GST_VERSION_MAJOR >= 1
+ mConfigureAlignment = true;
+#endif
-+
++
+ LOG(PR_LOG_DEBUG, ("reset decode done"));
return res;
}
-@@ -524,24 +576,43 @@ bool GStreamerReader::DecodeAudioData()
+@@ -508,11 +557,11 @@ bool GStreamerReader::DecodeAudioData()
+ /* We have nothing decoded so it makes no sense to return to the state machine
+ * as it will call us back immediately, we'll return again and so on, wasting
+ * CPU cycles for no job done. So, block here until there is either video or
+- * audio data available
++ * audio data available
+ */
+ mon.Wait();
+ if (!mAudioSinkBufferCount) {
+- /* There is still no audio data available, so either there is video data or
++ /* There is still no audio data available, so either there is video data or
+ * something else has happened (Eos, etc...). Return to the state machine
+ * to process it.
+ */
+@@ -524,24 +573,43 @@ bool GStreamerReader::DecodeAudioData()
}
}
@@ -1257,19 +1272,30 @@
AudioData* audio = new AudioData(offset, timestamp, duration,
frames, data.forget(), mInfo.mAudio.mChannels);
-@@ -550,9 +621,9 @@ bool GStreamerReader::DecodeAudioData()
-
- return true;
+@@ -552,7 +620,7 @@ bool GStreamerReader::DecodeAudioData()
}
--
-+
+
bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
- int64_t aTimeThreshold)
+ int64_t aTimeThreshold)
{
NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-@@ -589,11 +660,17 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+@@ -571,11 +639,11 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+ /* We have nothing decoded so it makes no sense to return to the state machine
+ * as it will call us back immediately, we'll return again and so on, wasting
+ * CPU cycles for no job done. So, block here until there is either video or
+- * audio data available
++ * audio data available
+ */
+ mon.Wait();
+ if (!mVideoSinkBufferCount) {
+- /* There is still no video data available, so either there is audio data or
++ /* There is still no video data available, so either there is audio data or
+ * something else has happened (Eos, etc...). Return to the state machine
+ * to process it
+ */
+@@ -589,11 +657,17 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
mDecoder->NotifyDecodedFrames(0, 1);
@@ -1288,7 +1314,7 @@
if ((aKeyFrameSkip && !isKeyframe)) {
gst_buffer_unref(buffer);
return true;
-@@ -609,10 +686,18 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+@@ -609,10 +683,18 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
"frame has invalid timestamp");
timestamp = GST_TIME_AS_USECONDS(timestamp);
@@ -1308,7 +1334,7 @@
gst_buffer_unref(buffer);
return true;
}
-@@ -621,61 +706,36 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
+@@ -621,61 +703,36 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
/* no more frames */
return false;
@@ -1334,7 +1360,7 @@
+ gst_structure_free(config);
+ mConfigureAlignment = false;
+ }
-+#endif
++#endif
+ nsRefPtr<PlanarYCbCrImage> image = GetImageFromBuffer(buffer);
if (!image) {
@@ -1388,7 +1414,7 @@
gst_buffer_unref(buffer);
return true;
-@@ -698,6 +758,10 @@ nsresult GStreamerReader::Seek(int64_t aTarget,
+@@ -698,6 +755,10 @@ nsresult GStreamerReader::Seek(int64_t aTarget,
return NS_ERROR_FAILURE;
}
LOG(PR_LOG_DEBUG, ("seek succeeded"));
@@ -1399,7 +1425,7 @@
return DecodeToTarget(aTarget);
}
-@@ -709,7 +773,9 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
+@@ -709,7 +770,9 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
return NS_OK;
}
@@ -1409,7 +1435,7 @@
MediaResource* resource = mDecoder->GetResource();
nsTArray<MediaByteRange> ranges;
resource->GetCachedRanges(ranges);
-@@ -731,12 +797,21 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
+@@ -731,12 +794,21 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
int64_t endOffset = ranges[index].mEnd;
gint64 startTime, endTime;
@@ -1431,7 +1457,7 @@
double start = (double) GST_TIME_AS_USECONDS (startTime) / GST_MSECOND;
double end = (double) GST_TIME_AS_USECONDS (endTime) / GST_MSECOND;
-@@ -755,7 +830,13 @@ void GStreamerReader::ReadAndPushData(guint aLength)
+@@ -755,7 +827,13 @@ void GStreamerReader::ReadAndPushData(guint aLength)
nsresult rv = NS_OK;
GstBuffer* buffer = gst_buffer_new_and_alloc(aLength);
@@ -1445,7 +1471,7 @@
uint32_t size = 0, bytesRead = 0;
while(bytesRead < aLength) {
rv = resource->Read(reinterpret_cast<char*>(data + bytesRead),
-@@ -766,14 +847,19 @@ void GStreamerReader::ReadAndPushData(guint aLength)
+@@ -766,14 +844,19 @@ void GStreamerReader::ReadAndPushData(guint aLength)
bytesRead += size;
}
@@ -1466,7 +1492,7 @@
/* If we read less than what we wanted, we reached the end */
gst_app_src_end_of_stream(mSource);
}
-@@ -786,8 +872,13 @@ int64_t GStreamerReader::QueryDuration()
+@@ -786,8 +869,13 @@ int64_t GStreamerReader::QueryDuration()
gint64 duration = 0;
GstFormat format = GST_FORMAT_TIME;
@@ -1480,7 +1506,7 @@
if (format == GST_FORMAT_TIME) {
LOG(PR_LOG_DEBUG, ("pipeline duration %" GST_TIME_FORMAT,
GST_TIME_ARGS (duration)));
-@@ -866,103 +957,6 @@ gboolean GStreamerReader::SeekData(GstAppSrc* aSrc, guint64 aOffset)
+@@ -866,103 +954,6 @@ gboolean GStreamerReader::SeekData(GstAppSrc* aSrc, guint64 aOffset)
return NS_SUCCEEDED(rv);
}
@@ -1584,7 +1610,7 @@
GstFlowReturn GStreamerReader::NewPrerollCb(GstAppSink* aSink,
gpointer aUserData)
{
-@@ -979,8 +973,12 @@ void GStreamerReader::AudioPreroll()
+@@ -979,8 +970,12 @@ void GStreamerReader::AudioPreroll()
{
/* The first audio buffer has reached the audio sink. Get rate and channels */
LOG(PR_LOG_DEBUG, ("Audio preroll"));
@@ -1598,7 +1624,7 @@
GstStructure* s = gst_caps_get_structure(caps, 0);
mInfo.mAudio.mRate = mInfo.mAudio.mChannels = 0;
gst_structure_get_int(s, "rate", (gint*) &mInfo.mAudio.mRate);
-@@ -998,9 +996,18 @@ void GStreamerReader::VideoPreroll()
+@@ -998,9 +993,18 @@ void GStreamerReader::VideoPreroll()
{
/* The first video buffer has reached the video sink. Get width and height */
LOG(PR_LOG_DEBUG, ("Video preroll"));
@@ -1618,15 +1644,15 @@
GstStructure* structure = gst_caps_get_structure(caps, 0);
gst_structure_get_fraction(structure, "framerate", &fpsNum, &fpsDen);
NS_ASSERTION(mPicture.width && mPicture.height, "invalid video resolution");
-@@ -1029,6 +1036,7 @@ void GStreamerReader::NewVideoBuffer()
+@@ -1029,6 +1033,7 @@ void GStreamerReader::NewVideoBuffer()
/* We have a new video buffer queued in the video sink. Increment the counter
* and notify the decode thread potentially blocked in DecodeVideoFrame
*/
-+
++
mDecoder->NotifyDecodedFrames(1, 0);
mVideoSinkBufferCount++;
mon.NotifyAll();
-@@ -1095,5 +1103,199 @@ void GStreamerReader::NotifyDataArrived(const char *aBuffer,
+@@ -1095,5 +1100,199 @@ void GStreamerReader::NotifyDataArrived(const char *aBuffer,
}
}
@@ -1648,7 +1674,7 @@
+ format = "S16BE";
+#endif
+#endif
-+ gst_caps_set_simple(caps, "format", G_TYPE_STRING, format, NULL);
++ gst_caps_set_simple(caps, "format", G_TYPE_STRING, format, nullptr);
+
+ return caps;
+}
@@ -1747,9 +1773,9 @@
+ gst_query_parse_allocation(query, &caps, &need_pool);
+ gst_video_info_init(&info);
+ gst_video_info_from_caps(&info, caps);
-+ gst_query_add_allocation_param(query, mAllocator, NULL);
++ gst_query_add_allocation_param(query, mAllocator, nullptr);
+ gst_query_add_allocation_pool(query, mBufferPool, info.size, 0, 0);
-+ gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, NULL);
++ gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, nullptr);
+ break;
+ default:
+ break;
@@ -1804,12 +1830,12 @@
+
+ return image;
+}
-+
++
+void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer,
+ GstBuffer** aOutBuffer,
+ nsRefPtr<PlanarYCbCrImage> &image)
+{
-+ *aOutBuffer = gst_buffer_new_allocate(mAllocator, gst_buffer_get_size(aBuffer), NULL);
++ *aOutBuffer = gst_buffer_new_allocate(mAllocator, gst_buffer_get_size(aBuffer), nullptr);
+ GstMemory *mem = gst_buffer_peek_memory(*aOutBuffer, 0);
+ GstMapInfo map_info;
+ gst_memory_map(mem, &map_info, GST_MAP_WRITE);
@@ -1957,7 +1983,7 @@
index 6e39753..3c8c3b9 100644
--- content/media/test/manifest.js
+++ content/media/test/manifest.js
-@@ -364,9 +364,9 @@ var gUnseekableTests = [
+@@ -357,9 +357,9 @@ var gUnseekableTests = [
{ name:"bogus.duh", type:"bogus/duh"}
];
// Unfortunately big-buck-bunny-unseekable.mp4 is doesn't play on Windows 7, so
Modified: trunk/www/linux-tor-browser/Makefile
==============================================================================
--- trunk/www/linux-tor-browser/Makefile Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/linux-tor-browser/Makefile Tue Feb 11 03:15:48 2014 (r1488)
@@ -2,9 +2,8 @@
PORTNAME= tor-browser
DISTVERSIONPREFIX=linux32-
-DISTVERSION= 3.5.1
+DISTVERSION= 3.5.2
DISTVERSIONSUFFIX=_${LOCALE}
-PORTREVISION= 1
CATEGORIES= www security linux
MASTER_SITES= https://people.torproject.org/~mikeperry/builds/${DISTVERSION}/ \
TOR/torbrowser/${DISTVERSION:S/-//g}
Modified: trunk/www/linux-tor-browser/distinfo
==============================================================================
--- trunk/www/linux-tor-browser/distinfo Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/linux-tor-browser/distinfo Tue Feb 11 03:15:48 2014 (r1488)
@@ -1,28 +1,28 @@
-SHA256 (tor-browser-linux32-3.5.1_ar.tar.xz) = dd0c4e2fea6761222389c91e106668418ba8960d61070fcd3548b51a26647d60
-SIZE (tor-browser-linux32-3.5.1_ar.tar.xz) = 25152188
-SHA256 (tor-browser-linux32-3.5.1_de.tar.xz) = 3108ab44d325fab9c5e0f1a591dc5b02a7888ae57d0d02798562bb9892b067fa
-SIZE (tor-browser-linux32-3.5.1_de.tar.xz) = 25115972
-SHA256 (tor-browser-linux32-3.5.1_en-US.tar.xz) = 4ac69c5f6cc2c6fb967f0aa00f6c9051c4caccde7fb4a6d9bc6baa67c203bcbc
-SIZE (tor-browser-linux32-3.5.1_en-US.tar.xz) = 24847332
-SHA256 (tor-browser-linux32-3.5.1_es-ES.tar.xz) = baea4410f7238b511a974038ae3d0c8479a364715ee1f88b9f0152b32c0febbf
-SIZE (tor-browser-linux32-3.5.1_es-ES.tar.xz) = 25069372
-SHA256 (tor-browser-linux32-3.5.1_fa.tar.xz) = b71d26cb63caf3c5171e48ba40cba1061e98fb6961160ae4bc5d7277b938e589
-SIZE (tor-browser-linux32-3.5.1_fa.tar.xz) = 25165744
-SHA256 (tor-browser-linux32-3.5.1_fr.tar.xz) = 34c19621b2d2866f36bc51b20e0d39d657f7f6a5b317db13260958b8f88facc7
-SIZE (tor-browser-linux32-3.5.1_fr.tar.xz) = 25131824
-SHA256 (tor-browser-linux32-3.5.1_it.tar.xz) = f1a5abf9ee6cfcdbc4a4dee36f08a70973585e0bb099500292a29d276328d857
-SIZE (tor-browser-linux32-3.5.1_it.tar.xz) = 25058672
-SHA256 (tor-browser-linux32-3.5.1_ko.tar.xz) = 4f0aed2a3855a355c851fba0f01b96895be86dc1f939381fdb71e1858ab18c39
-SIZE (tor-browser-linux32-3.5.1_ko.tar.xz) = 25139976
-SHA256 (tor-browser-linux32-3.5.1_nl.tar.xz) = 0fb77d027ba79885d1fd02cf42174f1d4e3809d36892f25781b1e7518deab69c
-SIZE (tor-browser-linux32-3.5.1_nl.tar.xz) = 25124696
-SHA256 (tor-browser-linux32-3.5.1_pl.tar.xz) = a01beae711f3870b862158e6dad12b702dcc622547835b1c468686b402d14eb7
-SIZE (tor-browser-linux32-3.5.1_pl.tar.xz) = 25136472
-SHA256 (tor-browser-linux32-3.5.1_pt-PT.tar.xz) = ac8110034a8b4a30559d0bf16cb4932fb0ae2555177df3cdaa5abb9db9367ff9
-SIZE (tor-browser-linux32-3.5.1_pt-PT.tar.xz) = 25124624
-SHA256 (tor-browser-linux32-3.5.1_ru.tar.xz) = d3e79e617de4eeb8dbd3ddab74abb4a216bb99b2f7ce72531203d42d9aedf2a8
-SIZE (tor-browser-linux32-3.5.1_ru.tar.xz) = 25117416
-SHA256 (tor-browser-linux32-3.5.1_vi.tar.xz) = e4c88b89b233bfae60421f1de2c35d429e17441c41b62b2f24d254dff19e901c
-SIZE (tor-browser-linux32-3.5.1_vi.tar.xz) = 25154132
-SHA256 (tor-browser-linux32-3.5.1_zh-CN.tar.xz) = 93ce617073721c3343f6d7a31eaaa06bc8f9843f75749922616a88a4c47038db
-SIZE (tor-browser-linux32-3.5.1_zh-CN.tar.xz) = 25149556
+SHA256 (tor-browser-linux32-3.5.2_ar.tar.xz) = 1542b21ddd6aebe416e8db1f1bf7b8dd1ccb216e3cb72b1d7f455e2530686f46
+SIZE (tor-browser-linux32-3.5.2_ar.tar.xz) = 25178808
+SHA256 (tor-browser-linux32-3.5.2_de.tar.xz) = 75cabe96eeafdc73c8ea603557c7de0f34a358107b435030c7f4ddc951cba6ec
+SIZE (tor-browser-linux32-3.5.2_de.tar.xz) = 25137660
+SHA256 (tor-browser-linux32-3.5.2_en-US.tar.xz) = 7f693b684a44419572988d7d61a234ea56ce9f42577f5023a36414e17325d434
+SIZE (tor-browser-linux32-3.5.2_en-US.tar.xz) = 24871532
+SHA256 (tor-browser-linux32-3.5.2_es-ES.tar.xz) = 5a5bea6ab58f83c3a276fa6593ba405a5ae3bf20af706ade31dc3b5aec9dab4f
+SIZE (tor-browser-linux32-3.5.2_es-ES.tar.xz) = 25092264
+SHA256 (tor-browser-linux32-3.5.2_fa.tar.xz) = 126f9834b1e6a72e5beb787ced05f1dbedd41d66c5aefa207f9a996050549aeb
+SIZE (tor-browser-linux32-3.5.2_fa.tar.xz) = 25188072
+SHA256 (tor-browser-linux32-3.5.2_fr.tar.xz) = fc9154fe846ad4e5ccd025261a76178e3d1f2c5c3d3eec1c76150cc962b32d5d
+SIZE (tor-browser-linux32-3.5.2_fr.tar.xz) = 25162000
+SHA256 (tor-browser-linux32-3.5.2_it.tar.xz) = 2c188f448d1c6186fc14822bb43e2316946c33d6159ad8b87cdc175ccf63a849
+SIZE (tor-browser-linux32-3.5.2_it.tar.xz) = 25086336
+SHA256 (tor-browser-linux32-3.5.2_ko.tar.xz) = 499de5bfc3b490726c8cb21d4f89c593341862ebeaf1ad8985ea085485103b32
+SIZE (tor-browser-linux32-3.5.2_ko.tar.xz) = 25166952
+SHA256 (tor-browser-linux32-3.5.2_nl.tar.xz) = 0ed16dea6aa89855135f50848b34d6054ebc1b2ad5102ab578c7100233f7c394
+SIZE (tor-browser-linux32-3.5.2_nl.tar.xz) = 25150156
+SHA256 (tor-browser-linux32-3.5.2_pl.tar.xz) = 4f37528ea78d293e38456d75a06b38b1dc451abeb3e21d6cabdd1f26677b3666
+SIZE (tor-browser-linux32-3.5.2_pl.tar.xz) = 25155924
+SHA256 (tor-browser-linux32-3.5.2_pt-PT.tar.xz) = 862525b4831c1af2c463a99c003317dcfd40ff0d17d097147df3bce763e4ec11
+SIZE (tor-browser-linux32-3.5.2_pt-PT.tar.xz) = 25146276
+SHA256 (tor-browser-linux32-3.5.2_ru.tar.xz) = 42b37b4a52f12ea22fb9e0d89355738b13eeadaede0a3a5858a0bc42d79369a5
+SIZE (tor-browser-linux32-3.5.2_ru.tar.xz) = 25146072
+SHA256 (tor-browser-linux32-3.5.2_vi.tar.xz) = d2dbc6e2b33fdd4297c87184547eb4e44f3d86752bf72d329498d872b606d9a6
+SIZE (tor-browser-linux32-3.5.2_vi.tar.xz) = 25175952
+SHA256 (tor-browser-linux32-3.5.2_zh-CN.tar.xz) = 74237de6e794d2fbaa5a0daaf886e7d97e8d533a3c722a948b3122e34cf766db
+SIZE (tor-browser-linux32-3.5.2_zh-CN.tar.xz) = 25171548
Modified: trunk/www/seamonkey/Makefile
==============================================================================
--- trunk/www/seamonkey/Makefile Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/seamonkey/Makefile Tue Feb 11 03:15:48 2014 (r1488)
@@ -22,7 +22,7 @@
LIB_DEPENDS= libv4l2.so:${PORTSDIR}/multimedia/libv4l
-EM_VERSION= 1.6
+EM_VERSION= 1.6.1_pre20140112
L_VERSION= 2.9b1
SSP_UNSAFE= yes
@@ -92,12 +92,13 @@
MOZ_OPTIONS+= --enable-ldap --enable-mailnews
.endif
.if ${PORT_OPTIONS:MENIGMAIL}
-MASTER_SITES+= https://www.enigmail.net/download/source/:enigmail
+#MASTER_SITES+= https://www.enigmail.net/download/source/:enigmail
+MASTER_SITES+= https://dev.gentoo.org/~polynomial-c/mozilla/:enigmail
DISTFILES+= ${EM_DISTFILE}:enigmail
RUN_DEPENDS+= gpg:${PORTSDIR}/security/gnupg
EM_DISTNAME= enigmail-${EM_VERSION}
-EM_DISTFILE= ${EM_DISTNAME}.tar.gz
-EM_XPI_FILE= ${MOZ_OBJDIR}/mozilla/dist/bin/${EM_DISTNAME}-${OPSYS:L}-${ARCH:S/amd64/x86_64/}.xpi
+EM_DISTFILE= ${EM_DISTNAME}.tar.xz
+EM_XPI_FILE= ${WRKSRC}/mailnews/extensions/enigmail/build/${EM_DISTNAME}-${OPSYS:L}-${ARCH:S/amd64/x86_64/}-${CC:T}.xpi
EM_ORIG_ID= {847b3a00-7ab1-11d4-8f02-006008948af5}
EM_ID= ${PORTNAME}@mozilla-enigmail.org
EM_ID_RFILES= ${XPI_LIBDIR}/${EM_ID}/install.rdf \
@@ -139,10 +140,11 @@
${WRKDIR}/${MOZILLA}.desktop
.if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL}
@${REINPLACE_CMD} -e 's,/usr/bin/perl,${PERL},' \
- ${WRKSRC}/mailnews/extensions/enigmail/makemake
+ ${WRKSRC}/mailnews/extensions/enigmail/util/fixlang.pl \
+ ${WRKSRC}/mailnews/extensions/enigmail/util/make-lang-xpi.pl
@${REINPLACE_CMD} -e '/^xpi/s/$$/ all/' \
-e '/^XPI_MODULE_VERS/s/= .*/= ${EM_VERSION}/' \
- ${WRKSRC}/mailnews/extensions/enigmail/Makefile.in
+ ${WRKSRC}/mailnews/extensions/enigmail/Makefile
@${REINPLACE_CMD} -e '/em:version/s,>[^<]*<,>${EM_VERSION}<,' \
-e '/em:maxVersion/s/pre//' \
${WRKSRC}/mailnews/extensions/enigmail/package/install.rdf
@@ -153,12 +155,14 @@
(cd ${MOZSRC} && ${AUTOCONF})
(cd ${MOZSRC}/js/src/ && ${AUTOCONF})
+post-configure:
+ cd ${WRKSRC}/mailnews/extensions/enigmail/ && \
+ ${SETENV} ${MAKE_ENV} ./configure
+
.if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL}
post-build:
- cd ${WRKSRC}/mailnews/extensions/enigmail && \
- ./makemake -r -o ${MOZ_OBJDIR}
${SETENV} ${MAKE_ENV} ${GMAKE} -j${MAKE_JOBS_NUMBER} all xpi \
- -C ${MOZ_OBJDIR}/mailnews/extensions/enigmail
+ -C ${WRKSRC}/mailnews/extensions/enigmail
.endif
port-pre-install:
Modified: trunk/www/seamonkey/distinfo
==============================================================================
--- trunk/www/seamonkey/distinfo Sun Feb 9 12:00:12 2014 (r1487)
+++ trunk/www/seamonkey/distinfo Tue Feb 11 03:15:48 2014 (r1488)
@@ -1,4 +1,4 @@
SHA256 (seamonkey-2.24.source.tar.bz2) = 63855265b4754dd056af8d611b50219577a592466cdf1d3865028d86ed680474
SIZE (seamonkey-2.24.source.tar.bz2) = 149845514
-SHA256 (enigmail-1.6.tar.gz) = 10d5eb7ba364b9b6e6275aae8bba1d0e4321ed7d55a715337d566ccf2a56ea4d
-SIZE (enigmail-1.6.tar.gz) = 1231111
+SHA256 (enigmail-1.6.1_pre20140112.tar.xz) = 2d89a9186c3ccfc9397c933c6f63c0518224fea0096d7a292dba3765de088149
+SIZE (enigmail-1.6.1_pre20140112.tar.xz) = 916028
Added: trunk/www/seamonkey/files/patch-mailnews-extensions-enigmail-config-getOsTarget.pl
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/www/seamonkey/files/patch-mailnews-extensions-enigmail-config-getOsTarget.pl Tue Feb 11 03:15:48 2014 (r1488)
@@ -0,0 +1,43 @@
+commit 49a1daf
+Author: Patrick Brunschwig <patrick at enigmail.net>
+Date: Tue Jan 28 18:10:54 2014 +0100
+
+ fixed detection of compiler type for better supporting cross-compilers
+---
+ config/getOsTarget.pl | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git config/getOsTarget.pl config/getOsTarget.pl
+index 91285cd..cf4a233 100755
+--- mailnews/extensions/enigmail/config/getOsTarget.pl
++++ mailnews/extensions/enigmail/config/getOsTarget.pl
+@@ -9,13 +9,15 @@
+ # -c : CPU and compiler type
+ # -o : OS type
+
++use File::Basename;
++
+ if ($#ARGV != 3) {
+ exit (1);
+ }
+
+ my $srcOs = $ARGV[1];
+ my $srcCpu = $ARGV[2];
+-my $srcComp = $ARGV[3];
++my $srcComp = basename($ARGV[3]);
+
+ my $targetOs = "";
+ my $targetCpu = "";
+@@ -95,10 +97,10 @@ else {
+ if ($targetOs eq "WINNT") {
+ $targetComp = "msvc";
+ }
+-if ($srcComp =~ /^gcc/) {
++elsif ($srcComp =~ /gcc/) {
+ $targetComp = "gcc3";
+ }
+-elsif ($srcComp =~ /^cc/) {
++elsif ($srcComp =~ /cc/) {
+ if ($targetOs eq "SunOS") {
+ $targetComp = "sunc";
+ }
More information about the freebsd-gecko
mailing list