diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp
index ef4e37af12..4d4b49fff3 100644
--- a/indra/llcorehttp/_httpoprequest.cpp
+++ b/indra/llcorehttp/_httpoprequest.cpp
@@ -568,7 +568,17 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)
// Use the viewer-based thread-safe API which has a
// fast/safe check for proxy enable. Would like to
// encapsulate this someway...
- LLProxy::getInstance()->applyProxySettings(mCurlHandle);
+ if (LLProxy::instanceExists())
+ {
+ // Make sure proxy won't be initialized from here,
+ // it might conflict with LLStartUp::startLLProxy()
+ LLProxy::getInstance()->applyProxySettings(mCurlHandle);
+ }
+ else
+ {
+ LL_WARNS() << "Proxy is not initialized!" << LL_ENDL;
+ }
+
}
else if (gpolicy.mHttpProxy.size())
{
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 098fec8004..68e60964c5 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -448,7 +448,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
else
{
- GLenum array[] =
+ static const GLenum array[] =
{
GL_VERTEX_ARRAY,
GL_NORMAL_ARRAY,
@@ -456,7 +456,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
GL_COLOR_ARRAY,
};
- GLenum mask[] =
+ static const GLenum mask[] =
{
MAP_VERTEX,
MAP_NORMAL,
diff --git a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp
index 0bd323eb58..ebcdde2960 100644
--- a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp
+++ b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp
@@ -84,6 +84,7 @@ private:
float mCurTime;
float mDuration;
+ EStatus mVlcStatus;
};
////////////////////////////////////////////////////////////////////////////////
@@ -111,6 +112,7 @@ MediaPluginBase(host_send_func, host_user_data)
mURL = std::string();
+ mVlcStatus = STATUS_NONE;
setStatus(STATUS_NONE);
}
@@ -209,28 +211,28 @@ void MediaPluginLibVLC::eventCallbacks(const libvlc_event_t* event, void* ptr)
switch (event->type)
{
case libvlc_MediaPlayerOpening:
- parent->setStatus(STATUS_LOADING);
+ parent->mVlcStatus = STATUS_LOADING;
break;
case libvlc_MediaPlayerPlaying:
parent->mDuration = (float)(libvlc_media_get_duration(parent->mLibVLCMedia)) / 1000.0f;
- parent->setStatus(STATUS_PLAYING);
+ parent->mVlcStatus = STATUS_PLAYING;
break;
case libvlc_MediaPlayerPaused:
- parent->setStatus(STATUS_PAUSED);
+ parent->mVlcStatus = STATUS_PAUSED;
break;
case libvlc_MediaPlayerStopped:
- parent->setStatus(STATUS_DONE);
+ parent->mVlcStatus = STATUS_DONE;
break;
case libvlc_MediaPlayerEndReached:
- parent->setStatus(STATUS_DONE);
+ parent->mVlcStatus = STATUS_DONE;
break;
case libvlc_MediaPlayerEncounteredError:
- parent->setStatus(STATUS_ERROR);
+ parent->mVlcStatus = STATUS_ERROR;
break;
case libvlc_MediaPlayerTimeChanged:
@@ -446,6 +448,7 @@ void MediaPluginLibVLC::receiveMessage(const char* message_string)
}
else if (message_name == "idle")
{
+ setStatus(mVlcStatus);
}
else if (message_name == "cleanup")
{
@@ -567,7 +570,7 @@ void MediaPluginLibVLC::receiveMessage(const char* message_string)
{
if (mLibVLCMediaPlayer)
{
- libvlc_media_player_pause(mLibVLCMediaPlayer);
+ libvlc_media_player_set_pause(mLibVLCMediaPlayer, 1);
}
}
else if (message_name == "seek")
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a50e6f142e..2956c0eb20 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8659,6 +8659,19 @@
Backup
0
+ MemProfiling
+
MenuAccessKeyTime
+ FSUseLegacyObjectProperties
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
index 5bc0c04411..8918182853 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
@@ -43,12 +43,12 @@ void default_lighting()
{
vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+ color *= vertex_color;
+
if (color.a < minimum_alpha)
{
discard;
}
-
- color *= vertex_color;
color.rgb = atmosLighting(color.rgb);
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 64fac00468..240a9d7702 100644
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -305,7 +305,7 @@ BOOL LLConversationViewSession::handleMouseUp( S32 x, S32 y, MASK mask )
LLConversationItem* item = dynamic_cast(getViewModelItem());
LLUUID session_id = item? item->getUUID() : LLUUID();
LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(session_id);
- if(!session_floater->hasFocus())
+ if(session_floater && !session_floater->hasFocus())
{
session_floater->setFocus(true);
}
@@ -460,6 +460,11 @@ void LLConversationViewSession::refresh()
}
}
}
+
+ if (mSpeakingIndicator)
+ {
+ mSpeakingIndicator->setShowParticipantsSpeaking(mIsInActiveVoiceChannel);
+ }
requestArrange();
// Do the regular upstream refresh
LLFolderViewFolder::refresh();
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 92f25402fa..021edbecb6 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -1462,7 +1462,12 @@ void LLFloaterTools::updateLandImpacts()
S32 rezzed_prims = parcel->getSimWidePrimCount();
S32 total_capacity = parcel->getSimWideMaxPrimCapacity();
-
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (region)
+ {
+ S32 max_tasks_per_region = (S32)region->getMaxTasks();
+ total_capacity = llmin(total_capacity, max_tasks_per_region);
+ }
std::string remaining_capacity_str = "";
bool show_mesh_cost = gMeshRepo.meshRezEnabled();
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index 20f80f50e2..b87889c1ff 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -63,6 +63,7 @@
#include "roles_constants.h"
#include "llgroupactions.h"
#include "lltrans.h"
+#include "llinventorymodel.h"
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.2a)
#include "llslurl.h"
#include "rlvactions.h"
@@ -1222,13 +1223,26 @@ void LLPanelPermissions::onCommitExport(LLUICtrl* ctrl, void* data)
// static
void LLPanelPermissions::onCommitName(LLUICtrl*, void* data)
{
- //LL_INFOS() << "LLPanelPermissions::onCommitName()" << LL_ENDL;
LLPanelPermissions* self = (LLPanelPermissions*)data;
LLLineEditor* tb = self->getChild("Object Name");
- if(tb)
+ if (!tb)
{
- LLSelectMgr::getInstance()->selectionSetObjectName(tb->getText());
-// LLSelectMgr::getInstance()->selectionSetObjectName(self->mLabelObjectName->getText());
+ return;
+ }
+ LLSelectMgr::getInstance()->selectionSetObjectName(tb->getText());
+ LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
+ if (selection->isAttachment() && (selection->getNumNodes() == 1) && !tb->getText().empty())
+ {
+ LLUUID object_id = selection->getFirstObject()->getAttachmentItemID();
+ LLViewerInventoryItem* item = findItem(object_id);
+ if (item)
+ {
+ LLPointer new_item = new LLViewerInventoryItem(item);
+ new_item->rename(tb->getText());
+ new_item->updateServer(FALSE);
+ gInventory.updateItem(new_item);
+ gInventory.notifyObservers();
+ }
}
}
@@ -1236,12 +1250,26 @@ void LLPanelPermissions::onCommitName(LLUICtrl*, void* data)
// static
void LLPanelPermissions::onCommitDesc(LLUICtrl*, void* data)
{
- //LL_INFOS() << "LLPanelPermissions::onCommitDesc()" << LL_ENDL;
LLPanelPermissions* self = (LLPanelPermissions*)data;
LLLineEditor* le = self->getChild("Object Description");
- if(le)
+ if (!le)
{
- LLSelectMgr::getInstance()->selectionSetObjectDescription(le->getText());
+ return;
+ }
+ LLSelectMgr::getInstance()->selectionSetObjectDescription(le->getText());
+ LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
+ if (selection->isAttachment() && (selection->getNumNodes() == 1))
+ {
+ LLUUID object_id = selection->getFirstObject()->getAttachmentItemID();
+ LLViewerInventoryItem* item = findItem(object_id);
+ if (item)
+ {
+ LLPointer new_item = new LLViewerInventoryItem(item);
+ new_item->setDescription(le->getText());
+ new_item->updateServer(FALSE);
+ gInventory.updateItem(new_item);
+ gInventory.notifyObservers();
+ }
}
}
@@ -1404,3 +1432,12 @@ void LLPanelPermissions::onCommitIncludeInSearch(LLUICtrl* ctrl, void*)
LLSelectMgr::getInstance()->selectionSetIncludeInSearch(box->get());
}
+
+LLViewerInventoryItem* LLPanelPermissions::findItem(LLUUID &object_id)
+{
+ if (!object_id.isNull())
+ {
+ return gInventory.getItem(object_id);
+ }
+ return NULL;
+}
diff --git a/indra/newview/llpanelpermissions.h b/indra/newview/llpanelpermissions.h
index 85aa0efbde..fe49939ae1 100644
--- a/indra/newview/llpanelpermissions.h
+++ b/indra/newview/llpanelpermissions.h
@@ -37,6 +37,7 @@
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//class LLNameBox;
+class LLViewerInventoryItem;
class LLViewerObject;
class LLPanelPermissions : public LLPanel
@@ -78,6 +79,8 @@ protected:
static void onCommitClickAction(LLUICtrl* ctrl, void*);
static void onCommitIncludeInSearch(LLUICtrl* ctrl, void*);
+
+ static LLViewerInventoryItem* findItem(LLUUID &object_id);
static void onCommitExport(LLUICtrl* ctrl, void* data); // OpenSim export permissions
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index b580c437a4..a50fd57c5e 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -3867,7 +3867,7 @@ bool LLStartUp::startLLProxy()
}
else
{
- LL_WARNS("Proxy") << "Invalid other HTTP proxy configuration."<< LL_ENDL;
+ LL_WARNS("Proxy") << "Invalid other HTTP proxy configuration: " << httpProxyType << LL_ENDL;
// Set the missing or wrong configuration back to something valid.
gSavedSettings.setString("HttpProxyType", "None");
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index 18895195a3..d3facd7e31 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -116,7 +116,6 @@ LLViewerCamera::LLViewerCamera() : LLCamera()
{
calcProjection(getFar());
mCameraFOVDefault = DEFAULT_FIELD_OF_VIEW;
- mPrevCameraFOVDefault = DEFAULT_FIELD_OF_VIEW;
mCosHalfCameraFOV = cosf(mCameraFOVDefault * 0.5f);
mPixelMeterRatio = 0.f;
mScreenPixelArea = 0;
@@ -897,15 +896,6 @@ void LLViewerCamera::setDefaultFOV(F32 vertical_fov_rads)
mCosHalfCameraFOV = cosf(mCameraFOVDefault * 0.5f);
}
-BOOL LLViewerCamera::isDefaultFOVChanged()
-{
- if(mPrevCameraFOVDefault != mCameraFOVDefault)
- {
- mPrevCameraFOVDefault = mCameraFOVDefault;
- return !gSavedSettings.getBOOL("IgnoreFOVZoomForLODs");
- }
- return FALSE;
-}
// static
void LLViewerCamera::updateCameraAngle( void* user_data, const LLSD& value)
diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h
index 5901de289f..f8c973690a 100644
--- a/indra/newview/llviewercamera.h
+++ b/indra/newview/llviewercamera.h
@@ -115,8 +115,6 @@ public:
void setDefaultFOV(F32 fov) ;
F32 getDefaultFOV() { return mCameraFOVDefault; }
- BOOL isDefaultFOVChanged();
-
BOOL cameraUnderWater() const;
BOOL areVertsVisible(LLViewerObject* volumep, BOOL all_verts);
@@ -140,7 +138,6 @@ protected:
mutable LLMatrix4 mProjectionMatrix; // Cache of perspective matrix
mutable LLMatrix4 mModelviewMatrix;
F32 mCameraFOVDefault;
- F32 mPrevCameraFOVDefault;
F32 mCosHalfCameraFOV;
LLVector3 mLastPointOfInterest;
F32 mPixelMeterRatio; // Divide by distance from camera to get pixels per meter at that distance.
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 90eb986a2c..c87c0a94a8 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -830,7 +830,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
sAnyMediaShowing = true;
}
- if (!pimpl->getUsedInUI() && pimpl->hasMedia() && (!pimpl->isMediaPaused() || !pimpl->isMediaTimeBased()))
+ if (!pimpl->getUsedInUI() && pimpl->hasMedia() && pimpl->isMediaPlaying())
{
sAnyMediaPlaying = true;
}
@@ -977,7 +977,6 @@ void LLViewerMedia::setAllMediaPaused(bool val)
if (pimpl->isMediaTimeBased() && pimpl->isMediaPaused())
{
pimpl->play();
- return;
}
}
else if (pimpl->isMediaTimeBased() && pimpl->mMediaSource)
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 923b3c5298..567325bbb9 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -421,6 +421,7 @@ void LLMenuParcelObserver::changed()
static LLView* land_buy_pass_pie = gMenuHolder->getChildView("Land Buy Pass Pie");
static LLView* land_buy = gMenuHolder->getChildView("Land Buy");
static LLView* land_buy_pie = gMenuHolder->getChildView("Land Buy Pie");
+ static LLView* buy_land = gMenuHolder->getChildView("Buy Land...");
BOOL pass_buyable = LLPanelLandGeneral::enableBuyPass(NULL) && parcel->getOwnerID() != gAgentID;
land_buy_pass->setEnabled(pass_buyable);
@@ -429,6 +430,7 @@ void LLMenuParcelObserver::changed()
BOOL buyable = enable_buy_land(NULL);
land_buy->setEnabled(buyable);
land_buy_pie->setEnabled(buyable);
+ buy_land->setEnabled(buyable);
// FIRE-4454: Cache controls because of performance reasons
}
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 7c42e03c6e..4bb7def6f2 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1259,18 +1259,18 @@ void LLVOVolume::sculpt()
}
}
-S32 LLVOVolume::computeLODDetail(F32 distance, F32 radius, F32 lod_factor)
+S32 LLVOVolume::computeLODDetail(F32 distance, F32 radius)
{
S32 cur_detail;
if (LLPipeline::sDynamicLOD)
{
// We've got LOD in the profile, and in the twist. Use radius.
- F32 tan_angle = (lod_factor*radius)/distance;
+ F32 tan_angle = (LLVOVolume::sLODFactor*radius)/distance;
cur_detail = LLVolumeLODGroup::getDetailFromTan(ll_round(tan_angle, 0.01f));
}
else
{
- cur_detail = llclamp((S32) (sqrtf(radius)*lod_factor*4.f), 0, 3);
+ cur_detail = llclamp((S32) (sqrtf(radius)*LLVOVolume::sLODFactor*4.f), 0, 3);
}
return cur_detail;
}
@@ -1286,7 +1286,6 @@ BOOL LLVOVolume::calcLOD()
F32 radius;
F32 distance;
- F32 lod_factor = LLVOVolume::sLODFactor;
if (mDrawable->isState(LLDrawable::RIGGED))
{
@@ -1322,18 +1321,12 @@ BOOL LLVOVolume::calcLOD()
distance *= rampDist;
}
-
+ // DON'T Compensate for field of view changing on FOV zoom.
distance *= F_PI/3.f;
- static LLCachedControl ignore_fov_zoom(gSavedSettings,"IgnoreFOVZoomForLODs");
- if(!ignore_fov_zoom)
- {
- lod_factor *= DEFAULT_FIELD_OF_VIEW / LLViewerCamera::getInstance()->getDefaultFOV();
- }
-
cur_detail = computeLODDetail(ll_round(distance, 0.01f),
- ll_round(radius, 0.01f),
- lod_factor);
+ ll_round(radius, 0.01f));
+
// FIRE-20191 / STORM-2139 Render Metadata->LOD Info is broken on all "recent" viewer versions
//if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_LOD_INFO) &&
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index 3b9e5a5677..9dcb9e4a75 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -328,7 +328,7 @@ public:
void clearRiggedVolume();
protected:
- S32 computeLODDetail(F32 distance, F32 radius, F32 lod_factor);
+ S32 computeLODDetail(F32 distance, F32 radius);
BOOL calcLOD();
LLFace* addFace(S32 face_index);
void updateTEData();
diff --git a/package_override_gcc.ini b/package_override_gcc.ini
new file mode 100644
index 0000000000..872f6940d0
--- /dev/null
+++ b/package_override_gcc.ini
@@ -0,0 +1,110 @@
+[firestorm]
+linux = build_directory|build-linux-x86_64
+
+[gstreamer]
+linux = http://downloads.phoenixviewer.com/gstreamer-0.10.6.201505150224-r5-linux-x64-201505150224-r5.tar.bz2|22d197890dd99756250912f396cb1abb
+
+[expat]
+linux = http://downloads.phoenixviewer.com/expat-2.0.1.201505150200-r31-linux-x64-201505150200-r31.tar.bz2|da531d07c19cb09c1a7e5d9b3a8c8c1d
+
+[jpeglib]
+linux = http://downloads.phoenixviewer.com/jpeglib-8c.201505150200-r27-linux-x64-201505150200-r27.tar.bz2|8b36861396af4a31668f673aebd4b1d8
+
+[gtk-atk-pango-glib]
+linux = http://downloads.phoenixviewer.com/gtk_atk_pango_glib-2.0-linux-x64-201505151700-r5.tar.bz2|61a10409052c7f77cbfe30b7a8cd7c0b
+
+[pcre]
+linux = http://downloads.phoenixviewer.com/pcre-8.35.-linux-x64-201505150212-r52.tar.bz2|316f14bec0578c39a6674938853afc88
+
+[dbus_glib]
+linux = http://downloads.phoenixviewer.com/dbus_glib-0.76-linux-x64-201505150213-r12.tar.bz2|611edfff96265eaaccd6549989bace99
+
+[ares]
+linux = http://downloads.phoenixviewer.com/ares-1.10.0.201505150214-r62-linux-x64-201505150214-r62.tar.bz2|df4c67d3f4192aaa2221bb47b13ecb40
+
+[apr_suite]
+linux = http://downloads.phoenixviewer.com/apr_suite-1.4.5.201505150215-r92-linux-x64-201505150215-r92.tar.bz2|e640dcbc376eec6f3a942b4625d92d8e
+
+[ogg_vorbis]
+linux = http://downloads.phoenixviewer.com/ogg_vorbis-1.2.2-1.3.2.201505150221-r32-linux-x64-201505150221-r32.tar.bz2|a237c81b2c5fa3926ce04586568cce74
+
+[glod]
+linux = http://downloads.phoenixviewer.com/glod-1.0pre4.201505150221-r81-linux-x64-201505150221-r81.tar.bz2|30a8b171ddc22acdc01488a4611b8abf
+
+[openal]
+linux = http://downloads.phoenixviewer.com/openal-1.12.854-1.1.0.201505150222-r25-linux-x64-201505150222-r25.tar.bz2|9ccf2c9046edd73854fc084919f507b2
+
+[libhunspell]
+linux = http://downloads.phoenixviewer.com/libhunspell-1.3.2.201505150222-r21-linux-x64-201505150222-r21.tar.bz2|7341037efcf156ad7aa6ba67ab0413c5
+
+[openjpeg]
+linux = http://downloads.phoenixviewer.com/openjpeg-1.4.201505150222-r26-linux-x64-201505150222-r26.tar.bz2|f8a5ed12a0b45e0c48e04642ee736426
+
+[openjpeg2]
+linux = http://downloads.phoenixviewer.com/openjpeg2-2.1.201601141020-r32-linux-x64-201601141020-r32.tar.bz2|8f4188c9a281425e26d89af0676bb6b7
+
+[google_breakpad]
+linux = http://downloads.phoenixviewer.com/google_breakpad-1413.201505150223-r95-linux-x64-201505150223-r95.tar.bz2|f8df27382e6afeee5408e85c010a6c86
+
+[xmlrpc-epi]
+linux = http://downloads.phoenixviewer.com/xmlrpc_epi-0.54.1.201505150223-r63-linux-x64-201505150223-r63.tar.bz2|e2e5b6aba70c8fbc09ef7f12e8fb3937
+
+[ndphysicsstub]
+linux = http://downloads.phoenixviewer.com/ndPhysicsStub-1.201505150224-r74-linux-x64-201505150224-r74.tar.bz2|2709f7a5cf499ea77481dd1fce796d61
+
+[libuuid]
+linux = http://downloads.phoenixviewer.com/libuuid-1.6.2-linux-x64-201505150200-r8.tar.bz2|6eca8418f134d2f4d97de89a33773be3
+
+[jsoncpp]
+linux = http://downloads.phoenixviewer.com/jsoncpp-0.5.0.201508041908-r34-linux-x64-201508041908-r34.tar.bz2|e10077e94fa6916b6da001fc52e15ed6
+
+[icu4c]
+linux = http://downloads.phoenixviewer.com/icu4c-53.1-linux-x64-201505150224-r8.tar.bz2|299260455a7a18dc1b77410dc5174ac5
+
+[zlib]
+linux = http://downloads.phoenixviewer.com/zlib-1.2.8.201505150226-r125-linux-x64-201505150226-r125.tar.bz2|c165dcf9bd8a27c0382137c33e1a3854
+
+[libxml2]
+linux = http://downloads.phoenixviewer.com/libxml2-2.9.1.201505150226-r42-linux-x64-201505150226-r42.tar.bz2|ba36cdab49fd5f3f5158cd6719a84a90
+
+[libpng]
+linux = http://downloads.phoenixviewer.com/libpng-1.6.8.201505150228-r52-linux-x64-201505150228-r52.tar.bz2|96cccc9c256107ff8425e15647957f17
+
+[boost]
+linux = http://downloads.phoenixviewer.com/boost-1.57-linux-x64-201505150230-r138.tar.bz2|e86cc6e004d39d7210f708b39bed77a9
+
+[colladadom]
+linux = http://downloads.phoenixviewer.com/colladadom-2.3.201505150238-r95-linux-x64-201505150238-r95.tar.bz2|0f3447ce6fddba79b54cb5959e95f330
+
+[freetype]
+linux = http://downloads.phoenixviewer.com/freetype-2.3.9.201505150242-r61-linux-x64-201505150242-r61.tar.bz2|b30634f1a6ee2b4940eee06267a607df
+
+[fontconfig]
+linux = http://downloads.phoenixviewer.com/fontconfig-2.11.0-linux-x64-201505150243-r22.tar.bz2|15b2955b9b66926e52f48e929bf5e332
+
+[openssl]
+linux = http://downloads.phoenixviewer.com/openssl-1.0.1i.201505150244-r129-linux-x64-201505150244-r129.tar.bz2|86b25634e85f65ea7aeb5b99a8ad2f26
+
+[curl]
+linux = http://downloads.phoenixviewer.com/curl-7.47.0.201604192059-linux64-201604192059.tar.bz2|5b164c2b1cfc1270a60c3b4ad8dd9cd1
+
+[llqtwebkit]
+linux = http://downloads.phoenixviewer.com/llqtwebkit-4.7.1-linux-x64-201505150251-r131.tar.bz2|de49fafd04335bf11948570b445658bb
+
+[sdl]
+linux = http://downloads.phoenixviewer.com/SDL-1.2.15-linux-x64-201509062227-r43.tar.bz2|2566e373b89a2e4f8e93a78948deda10
+
+[open-libndofdev]
+linux = http://downloads.phoenixviewer.com/open_libndofdev-0.8-linux-x64-201602152224-r18.tar.bz2|587567ef04c06b9bf746e3491dbcc556
+
+[uriparser]
+linux = http://downloads.phoenixviewer.com/uriparser-0.8.0.1-linux-x64-201502251606-r15.tar.bz2|e67a27e13e546cbb13fad2665a1896b7
+
+[slplugins]
+linux =
+
+[llceflib]
+linux = http://downloads.phoenixviewer.com/llceflib-1.0-linux-x64-201611192255-r72.tar.bz2|ec944718ce98d77aab36d4d422fde2aa
+
+[vlc-bin]
+linux = http://downloads.phoenixviewer.com/vlc_bin-2.2.3-linux-x64-201610182130-r16.tar.bz2|5eace400c487011a678493fc520be24d
diff --git a/package_override_vc12.ini b/package_override_vc12.ini
new file mode 100644
index 0000000000..dd1b94d5d8
--- /dev/null
+++ b/package_override_vc12.ini
@@ -0,0 +1,95 @@
+[firestorm]
+windows=build_directory|build-vc120_x64
+
+[expat]
+windows = http://downloads.phoenixviewer.com/expat-2.0.1.201412041835-windows-x64-201412041835.tar.bz2|6295b4bbc7b7498bdff342a399628a5f
+
+[ogg_vorbis]
+windows = http://downloads.phoenixviewer.com/ogg_vorbis-1.2.2-1.3.2.201412081901-windows-x64-201412081901.tar.bz2|6d541e34af90e225c3605afc3ab5f520
+
+[apr_suite]
+windows = http://downloads.phoenixviewer.com/apr_suite-1.4.5.201602231252-r100-windows-x64-201602231252-r100.tar.bz2|45230669d56305f479bab020512f3c7e
+
+[ares]
+windows = http://downloads.phoenixviewer.com/ares-1.10.0.201412051139-windows-x64-201412051139.tar.bz2|c558757b6f9eeb07397543a602887414
+
+[jsoncpp]
+windows = http://downloads.phoenixviewer.com/jsoncpp-0.5.0.201508040900-r34-windows-x64-201508040900-r34.tar.bz2|2957dcc4ba8f90f8624b64a2dcac4309
+
+[nvapi]
+windows = http://downloads.phoenixviewer.com/nvapi-304-windows-x64-201412041836.tar.bz2|6d82a041479e1c80613560cfb4abc793
+
+[jpeglib]
+windows = http://downloads.phoenixviewer.com/jpeglib-8c.201412091958-windows-x64-201412091958.tar.bz2|926fcd7e4a899d7ae275637bfca241a4
+
+[zlib]
+windows = http://downloads.phoenixviewer.com/zlib-1.2.8.201412041926-windows-x64-201412041926.tar.bz2|12906492988107cc61d069829b1e27a6
+
+[freetype]
+windows = http://downloads.phoenixviewer.com/freetype-2.3.9.201505100250-r61-windows-x64-201505100250-r61.tar.bz2|c3ea8e68d0a0f399253e8d578ee38da2
+
+[glod]
+windows = http://downloads.phoenixviewer.com/glod-1.0pre4.201508040902-r83-windows-x64-201508040902-r83.tar.bz2|4b5addbe8678a85420994351d6888cd8
+
+[libhunspell]
+windows = http://downloads.phoenixviewer.com/libhunspell-1.3.2.201412051002-windows-x64-201412051002.tar.bz2|60feb84271fc5a36a5443b2fdd4ae488
+
+[openjpeg]
+windows = http://downloads.phoenixviewer.com/openjpeg-1.4.201412051021-windows-x64-201412051021.tar.bz2|47c09d96ae84fa4518b639cd93ba45b3
+
+[openjpeg2]
+windows = http://downloads.phoenixviewer.com/openjpeg2-2.1.201601141917-r32-windows-x64-201601141917-r32.tar.bz2|0465f2221c22a7349e4ae49f751ae3d3
+
+[google_breakpad]
+windows = http://downloads.phoenixviewer.com/google_breakpad-1413.201505112008-r97-windows-x64-201505112008-r97.tar.bz2|5c838ef1438b1f4264ff393e0d5420bd
+
+[pcre]
+windows = http://downloads.phoenixviewer.com/pcre-8.35.-windows-x64-201412051117.tar.bz2|c4226981c108e5963fcfa8d625ce6c3e
+
+[openssl]
+windows = http://downloads.phoenixviewer.com/openssl-1.0.1i.201412051423-windows-x64-201412051423.tar.bz2|331c237a8bfa36328f5c992d4c24eb04
+
+[curl]
+windows = http://downloads.phoenixviewer.com/curl-7.47.0.201604191310-windows64-201604191310.tar.bz2|e527051baf7905f97811a3d029594fc3
+
+[xmlrpc-epi]
+windows = http://downloads.phoenixviewer.com/xmlrpc_epi-0.54.1.201412081443-windows-x64-201412081443.tar.bz2|acf0701508169cb8a2d77ace63ded24a
+
+[libxml2]
+windows = http://downloads.phoenixviewer.com/libxml2-2.9.1.201412051457-windows-x64-201412051457.tar.bz2|177a83579199702fff5505222af204ec
+
+[libpng]
+windows = http://downloads.phoenixviewer.com/libpng-1.6.8.201412051513-windows-x64-201412051513.tar.bz2|39b887916945024bb4200bfcc3cdd4a1
+
+[libndofdev]
+windows = http://downloads.phoenixviewer.com/libndofdev-0.1.201412081905-windows-x64-201412081905.tar.bz2|dcffe4ca2354d063a9885b1551c23548
+
+[icu4c]
+windows = http://downloads.phoenixviewer.com/icu4c-53.1-windows-x64-201412051602.tar.bz2|926e8005f8e3e857aa8dba19005d5e81
+
+[boost]
+windows = http://downloads.phoenixviewer.com/boost-1.57-windows-201606032025-r139.tar.bz2|96b2f66728415217884b7af873d89f11
+
+[colladadom]
+windows = http://downloads.phoenixviewer.com/colladadom-2.3.201606032138-r100-windows-x64-201606032138-r100.tar.bz2|f47abb611ade15cf960e81649a1f9da0
+
+[uriparser]
+windows = http://downloads.phoenixviewer.com/uriparser-0.8.0.1-windows-x64-201503021339-r17.tar.bz2|258fe49b01297a5e836a90cc6324b5e0
+
+[ndphysicsstub]
+windows = http://downloads.phoenixviewer.com/ndPhysicsStub-1.201412081952-windows-x64-201412081952.tar.bz2|a2baf97f950cc16af9fe5cf316b7fa4d
+
+[gtk-atk-pango-glib]
+windows =
+
+[llqtwebkit]
+windows =
+
+[gntp-growl]
+windows = http://downloads.phoenixviewer.com/gntp_growl-1.0-windows-x64-201601022251-r16.tar.bz2|5b1d8e9d3f4fd4fcc6b090d2e9bfd23d
+
+[llceflib]
+windows = http://downloads.phoenixviewer.com/llceflib-1.0-windows-x64-201611182300-r72.tar.bz2|5bb2ec95ff3d8d8aea0136d39b6b3f60
+
+[vlc-bin]
+windows = http://downloads.phoenixviewer.com/vlc_bin-2.2.4.201608121201-windows64-201608121201.tar.bz2|035cd97ce22bd26cfe6eb80c411c40d4