Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Feb 2014 03:15:49 GMT
From:      svn-freebsd-gecko@chruetertee.ch
To:        freebsd-gecko@freebsd.org
Subject:   [SVN-Commit] r1488 - in trunk/www: firefox firefox-nightly firefox-nightly/files firefox/files linux-tor-browser seamonkey seamonkey/files
Message-ID:  <201402110315.s1B3FnhU054626@trillian.chruetertee.ch>

next in thread | raw e-mail | index | archive | help
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@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";
+   }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402110315.s1B3FnhU054626>