From 1d54e25990b5e28a6fd7f352bfa26473aec53d6d Mon Sep 17 00:00:00 2001 From: Cho Date: Thu, 27 Jun 2013 22:50:41 +0100 Subject: Fixed delay in loading tabs on Facebook floater for ACME-649 --- indra/newview/llfloatersocial.cpp | 33 ++++++++++++++++++++++----------- indra/newview/llfloatersocial.h | 1 + 2 files changed, 23 insertions(+), 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatersocial.cpp b/indra/newview/llfloatersocial.cpp index e305bfd10a..9198d9a07b 100644 --- a/indra/newview/llfloatersocial.cpp +++ b/indra/newview/llfloatersocial.cpp @@ -128,6 +128,8 @@ LLSocialPhotoPanel::~LLSocialPhotoPanel() BOOL LLSocialPhotoPanel::postBuild() { + setVisibleCallback(boost::bind(&LLSocialPhotoPanel::onVisibilityChange, this, _2)); + mPostButton = getChild("post_btn"); mResolutionComboBox = getChild("resolution_combobox"); mResolutionComboBox->setCommitCallback(boost::bind(&LLSocialPhotoPanel::onResolutionComboCommit, this)); @@ -138,17 +140,6 @@ BOOL LLSocialPhotoPanel::postBuild() mFailureLblPanel = getChild("failed_panel"); mThumbnailPlaceholder = getChild("thumbnail_placeholder"); - LLRect full_screen_rect = getRootView()->getRect(); - LLSnapshotLivePreview::Params p; - p.rect(full_screen_rect); - LLSnapshotLivePreview* previewp = new LLSnapshotLivePreview(p); - mPreviewHandle = previewp->getHandle(); - - previewp->setSnapshotType(previewp->SNAPSHOT_WEB); - previewp->setSnapshotFormat(LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG); - //previewp->setSnapshotQuality(98); - previewp->setThumbnailPlaceholderRect(getThumbnailPlaceholderRect()); - return LLPanel::postBuild(); } @@ -293,6 +284,26 @@ void LLSocialPhotoPanel::updateControls() updateResolution(combo, instance, FALSE); } +void LLSocialPhotoPanel::onVisibilityChange(const LLSD& new_visibility) +{ + bool visible = new_visibility.asBoolean(); + if (visible && !mPreviewHandle.get()) + { + LLRect full_screen_rect = getRootView()->getRect(); + LLSnapshotLivePreview::Params p; + p.rect(full_screen_rect); + LLSnapshotLivePreview* previewp = new LLSnapshotLivePreview(p); + mPreviewHandle = previewp->getHandle(); + + previewp->setSnapshotType(previewp->SNAPSHOT_WEB); + previewp->setSnapshotFormat(LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG); + //previewp->setSnapshotQuality(98); + previewp->setThumbnailPlaceholderRect(getThumbnailPlaceholderRect()); + + updateControls(); + } +} + void LLSocialPhotoPanel::draw() { LLSnapshotLivePreview * previewp = static_cast(mPreviewHandle.get()); diff --git a/indra/newview/llfloatersocial.h b/indra/newview/llfloatersocial.h index 6411843b9c..6675a990f4 100644 --- a/indra/newview/llfloatersocial.h +++ b/indra/newview/llfloatersocial.h @@ -70,6 +70,7 @@ class LLSocialPhotoPanel : public LLPanel LLSnapshotLivePreview* getPreviewView(); void updateControls(); + void onVisibilityChange(const LLSD& new_visibility); LLUICtrl * mResolutionComboBox; LLUICtrl *mRefreshBtn, *mRefreshLabel; -- cgit v1.2.3