pulling fixes back from viewer-beta

master
Oz Linden 2010-12-15 10:12:49 -05:00
commit 33f745b237
6 changed files with 148 additions and 36 deletions

View File

@ -46,9 +46,6 @@ viewer-beta.viewer_channel = "Second Life Beta Viewer"
viewer-beta.login_channel = "Second Life Beta Viewer"
viewer-beta.build_debug_release_separately = true
viewer-beta.build_viewer_update_version_manager = true
# Settings to test new code ticket service
viewer-beta.codeticket_server_url = "http://pdp75.lindenlab.com:8000/codeticket/linden/"
viewer-beta.codeticket_add_context = true
# ========================================
# Viewer Release

View File

@ -265,14 +265,7 @@ int LLProcessLauncher::launch(void)
delete[] fake_argv;
mProcessID = id;
// At this point, the child process will have been created (since that's how vfork works -- the child borrowed our execution context until it forked)
// If the process doesn't exist at this point, the exec failed.
if(!isRunning())
{
result = -1;
}
return result;
}

View File

@ -114,11 +114,109 @@ public:
LLAgentHandler gAgentHandler;
//-- LLPanelProfile::ChildStack begins ----------------------------------------
LLPanelProfile::ChildStack::ChildStack()
: mParent(NULL)
{
}
void LLPanelProfile::ChildStack::setParent(LLPanel* parent)
{
llassert_always(parent != NULL);
mParent = parent;
}
/// Save current parent's child views and remove them from the child list.
bool LLPanelProfile::ChildStack::push()
{
view_list_t vlist = *mParent->getChildList();
for (view_list_t::const_iterator it = vlist.begin(); it != vlist.end(); ++it)
{
LLView* viewp = *it;
mParent->removeChild(viewp);
}
mStack.push_back(vlist);
dump();
return true;
}
/// Restore saved children (adding them back to the child list).
bool LLPanelProfile::ChildStack::pop()
{
if (mStack.size() == 0)
{
llwarns << "Empty stack" << llendl;
llassert(mStack.size() == 0);
return false;
}
view_list_t& top = mStack.back();
for (view_list_t::const_iterator it = top.begin(); it != top.end(); ++it)
{
LLView* viewp = *it;
mParent->addChild(viewp);
}
mStack.pop_back();
dump();
return true;
}
/// Temporarily add all saved children back.
void LLPanelProfile::ChildStack::preParentReshape()
{
mSavedStack = mStack;
while(mStack.size() > 0)
{
pop();
}
}
/// Add the temporarily saved children back.
void LLPanelProfile::ChildStack::postParentReshape()
{
mStack = mSavedStack;
mSavedStack = stack_t();
for (stack_t::const_iterator stack_it = mStack.begin(); stack_it != mStack.end(); ++stack_it)
{
const view_list_t& vlist = (*stack_it);
for (view_list_t::const_iterator list_it = vlist.begin(); list_it != vlist.end(); ++list_it)
{
LLView* viewp = *list_it;
lldebugs << "removing " << viewp->getName() << llendl;
mParent->removeChild(viewp);
}
}
}
void LLPanelProfile::ChildStack::dump()
{
unsigned lvl = 0;
lldebugs << "child stack dump:" << llendl;
for (stack_t::const_iterator stack_it = mStack.begin(); stack_it != mStack.end(); ++stack_it, ++lvl)
{
std::ostringstream dbg_line;
dbg_line << "lvl #" << lvl << ":";
const view_list_t& vlist = (*stack_it);
for (view_list_t::const_iterator list_it = vlist.begin(); list_it != vlist.end(); ++list_it)
{
dbg_line << " " << (*list_it)->getName();
}
lldebugs << dbg_line.str() << llendl;
}
}
//-- LLPanelProfile::ChildStack ends ------------------------------------------
LLPanelProfile::LLPanelProfile()
: LLPanel()
, mTabCtrl(NULL)
, mAvatarId(LLUUID::null)
{
mChildStack.setParent(this);
}
BOOL LLPanelProfile::postBuild()
@ -136,6 +234,15 @@ BOOL LLPanelProfile::postBuild()
return TRUE;
}
// virtual
void LLPanelProfile::reshape(S32 width, S32 height, BOOL called_from_parent)
{
// Temporarily add saved children back and reshape them.
mChildStack.preParentReshape();
LLPanel::reshape(width, height, called_from_parent);
mChildStack.postParentReshape();
}
void LLPanelProfile::onOpen(const LLSD& key)
{
// open the desired panel
@ -177,7 +284,6 @@ void LLPanelProfile::onOpen(const LLSD& key)
}
}
//*TODO redo panel toggling
void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
{
// TRUE - we need to open/expand "panel"
@ -204,21 +310,10 @@ void LLPanelProfile::onTabSelected(const LLSD& param)
}
}
void LLPanelProfile::setAllChildrenVisible(BOOL visible)
{
const child_list_t* child_list = getChildList();
child_list_const_iter_t child_it = child_list->begin();
for (; child_it != child_list->end(); ++child_it)
{
LLView* viewp = *child_it;
viewp->setVisible(visible);
}
}
void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
{
// Hide currently visible panel (STORM-690).
setAllChildrenVisible(FALSE);
mChildStack.push();
// Add the panel or bring it to front.
if (panel->getParent() != this)
@ -231,7 +326,7 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
}
panel->setVisible(TRUE);
panel->setFocus(TRUE); // prevent losing focus by the floater
panel->onOpen(params);
LLRect new_rect = getRect();
@ -249,15 +344,17 @@ void LLPanelProfile::closePanel(LLPanel* panel)
removeChild(panel);
// Make the underlying panel visible.
mChildStack.pop();
// Prevent losing focus by the floater
const child_list_t* child_list = getChildList();
if (child_list->size() > 0)
{
child_list->front()->setVisible(TRUE);
child_list->front()->setFocus(TRUE); // prevent losing focus by the floater
child_list->front()->setFocus(TRUE);
}
else
{
llwarns << "No underlying panel to make visible." << llendl;
llwarns << "No underlying panel to focus." << llendl;
}
}
}

View File

@ -41,7 +41,7 @@ class LLPanelProfile : public LLPanel
public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void onOpen(const LLSD& key);
virtual void togglePanel(LLPanel*, const LLSD& key = LLSD());
@ -58,8 +58,6 @@ protected:
virtual void onTabSelected(const LLSD& param);
virtual void setAllChildrenVisible(BOOL visible);
LLTabContainer* getTabCtrl() { return mTabCtrl; }
const LLUUID& getAvatarId() { return mAvatarId; }
@ -72,8 +70,34 @@ protected:
private:
//-- ChildStack begins ----------------------------------------------------
class ChildStack
{
LOG_CLASS(LLPanelProfile::ChildStack);
public:
ChildStack();
void setParent(LLPanel* parent);
bool push();
bool pop();
void preParentReshape();
void postParentReshape();
private:
void dump();
typedef LLView::child_list_t view_list_t;
typedef std::list<view_list_t> stack_t;
stack_t mStack;
stack_t mSavedStack;
LLPanel* mParent;
};
//-- ChildStack ends ------------------------------------------------------
LLTabContainer* mTabCtrl;
profile_tabs_t mTabContainer;
ChildStack mChildStack;
LLUUID mAvatarId;
};

View File

@ -5,5 +5,6 @@
# to a marker file which should be created if the installer fails.q
#
open ../Resources/mac-updater.app --args -dmg "$1" -name "Second Life Viewer 2" -marker "$2"
cd "$(dirname "$0")"
../Resources/mac-updater.app/Contents/MacOS/mac-updater -dmg "$1" -name "Second Life Viewer 2" -marker "$2" &
exit 0

View File

@ -1,10 +1,10 @@
#! /bin/bash
INSTALL_DIR=$(cd "$(dirname $0)/.." ; pwd)
export LD_LIBRARY_PATH=$INSTALL_DIR/lib
INSTALL_DIR=$(cd "$(dirname "$0")/.." ; pwd)
export LD_LIBRARY_PATH="$INSTALL_DIR/lib"
bin/linux-updater.bin --file "$1" --dest "$INSTALL_DIR" --name "Second Life Viewer 2" --stringsdir "$INSTALL_DIR/skins/default/xui/en" --stringsfile "strings.xml"
if [ $? -ne 0 ]
then touch $2
then touch "$2"
fi
rm -f $1
rm -f "$1"