Commit 50e18c57 authored by hrchilds's avatar hrchilds
Browse files

Update from January 4, 2005

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@389 18c085ea-50e0-402c-830e-de6fd14e8384
parent 60c6b3b7
......@@ -786,9 +786,9 @@ env command for configure.
#
# Build and install it in the visit directory.
#
gunzip visit041108.tar.gz
tar xf visit041108.tar
cd visit041108/config-site
gunzip visit050110.tar.gz
tar xf visit050110.tar
cd visit050110/config-site
echo VISITHOME=$VISITDIR > `hostname`.conf
sed "s/ARCH/$VISITARCH/" Template.conf >> `hostname`.conf
cd ..
......@@ -797,12 +797,12 @@ make
clearcase_bin/visit-bin-dist
# Use the appropriate install command based on the operating system on
# which you built VisIt.
clearcase_bin/visit-install 1.4 aix $VISITDIR
clearcase_bin/visit-install 1.4 irix6 $VISITDIR
clearcase_bin/visit-install 1.4 linux $VISITDIR
clearcase_bin/visit-install 1.4 linux-ia64 $VISITDIR
clearcase_bin/visit-install 1.4 osf1 $VISITDIR
clearcase_bin/visit-install 1.4 sunos5 $VISITDIR
clearcase_bin/visit-install 1.4.1 aix $VISITDIR
clearcase_bin/visit-install 1.4.1 irix6 $VISITDIR
clearcase_bin/visit-install 1.4.1 linux $VISITDIR
clearcase_bin/visit-install 1.4.1 linux-ia64 $VISITDIR
clearcase_bin/visit-install 1.4.1 osf1 $VISITDIR
clearcase_bin/visit-install 1.4.1 sunos5 $VISITDIR
When running the configure script you can enable or disable certain dependent
packages. All the configure options are listed at the beginning of the
......
Copyright 2000 - 2004.
Copyright 2000 - 2005.
The Regents of the University of California.
All rights reserved.
......
......@@ -17,7 +17,7 @@ Unix and Mac OS X:
where
"version" will be 1.4 for the current distribution.
"version" will be 1.4.1 for the current distribution.
"platform" will be one of the following: aix, darwin, irix6, linux,
osf1, or sunos5 depending on the machine. The one you use should
......@@ -28,17 +28,17 @@ Unix and Mac OS X:
For example
visit-install 1.4 irix6 /usr/local/visit
visit-install 1.4.1 irix6 /usr/local/visit
will install the irix6, 1.4 version of visit in the directory
will install the irix6, 1.4.1 version of visit in the directory
"/usr/local/visit". Note that you will need to have the file
"visit1_4.irix6.tar.gz" present in the current directory for this
"visit1_4_1.irix6.tar.gz" present in the current directory for this
to function properly. You can install multiple binaries into the
same directory. For example, you could then execute
visit-install 1.4 linux /usr/local/visit
visit-install 1.4.1 linux /usr/local/visit
to add a linux, 1.4 version of visit to the same directory.
to add a linux, 1.4.1 version of visit to the same directory.
2. Add the bin directory below the installation directory
(/usr/local/visit/bin in our example) to each user's search path.
......@@ -76,8 +76,8 @@ Unix and Mac OS X:
Windows:
1. Copy the file visit1.4.exe to your desktop.
1. Copy the file visit1.4.1.exe to your desktop.
2. Double click on the visit1.4.exe icon to run the installer.
2. Double click on the visit1.4.1.exe icon to run the installer.
3. Follow the directions provided by the installer.
......@@ -20,10 +20,14 @@ using std::deque;
//
// Mark C. Miller, Thu May 27 11:05:15 PDT 2004
// Added missing initialization for plotActor data member
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added window id (wid)
// ****************************************************************************
DataNetwork::DataNetwork(void)
{
id = -1;
nid = -1;
wid = -1;
pspec = NULL;
dspec = NULL;
writer = NULL;
......@@ -144,11 +148,14 @@ DataNetwork::GetActor(avtDataObject_p dob)
// Mark C. Miller, 30Apr03
// Make sure plot is not NULL before calling a method on it.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Changed id to nid
//
// ****************************************************************************
void
DataNetwork::ReleaseData(void)
{
debug1 << "Releasing all data associated with network " << id << endl;
debug1 << "Releasing all data associated with network " << nid << endl;
int nNodes = nodeList.size();
for (int i = 0 ; i < nNodes ; i++)
{
......
......@@ -52,6 +52,11 @@
// Kathleen Bonnell, Thu Oct 21 15:55:46 PDT 2004
// Added ActorIsNull method.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Changed id to nid
// Added wid for window id
// Added methods to set/get window id
//
// ****************************************************************************
class DataNetwork
{
......@@ -59,7 +64,8 @@ public:
DataNetwork(void);
virtual ~DataNetwork(void);
void SetID(int _id) { id = _id; };
void SetNetID(int _id) { nid = _id; };
void SetWinID(int _id) { wid = _id; };
void SetPlottype(const std::string &type) { plottype = type; };
virtual void SetPlot(avtPlot *_plot) { plot = _plot; };
void SetTerminalNode(Netnode* t) {terminalNode = t;};
......@@ -76,7 +82,8 @@ public:
avtDataObjectWriter_p GetWriter(avtDataObject_p dob,
avtPipelineSpecification_p pspec,
WindowAttributes *atts);
int GetID(void) { return id; };
int GetNetID(void) const { return nid; };
int GetWinID(void) const { return wid; };
Netnode* GetTerminalNode(void) { return terminalNode; };
virtual avtPlot_p GetPlot(void) { return plot; };
avtActor_p GetActor(avtDataObject_p dob);
......@@ -88,7 +95,8 @@ public:
std::vector<Netnode*> &GetNodeList(void) { return nodeList; };
protected:
int id;
int nid;
int wid;
Netnode *terminalNode;
std::vector<Netnode*> nodeList;
avtDataSpecification_p dspec;
......
......@@ -385,6 +385,9 @@ RPCExecutor<PreparePlotRPC>::Execute(PreparePlotRPC *rpc)
// Eric Brugger, Fri Mar 19 15:19:13 PST 2004
// Modified the rpc to pass the data extents to the engine.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added code to pass window id
//
// ****************************************************************************
template<>
void
......@@ -398,7 +401,7 @@ RPCExecutor<MakePlotRPC>::Execute(MakePlotRPC *rpc)
{
netmgr->MakePlot(rpc->GetID().c_str(), rpc->GetAtts(),
rpc->GetDataExtents());
MakePlotRPC::NetworkID id(netmgr->EndNetwork());
MakePlotRPC::NetworkID id(netmgr->EndNetwork(rpc->GetWindowID()));
rpc->SendReply(&id);
}
CATCH2(VisItException, e)
......@@ -539,6 +542,8 @@ RPCExecutor<UpdatePlotAttsRPC>::Execute(UpdatePlotAttsRPC *rpc)
// Kathleen Bonnell, Fri Oct 10 10:58:10 PDT 2003
// Set up callbacks for DataObjectQuery.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added window id to pick rpc
// ****************************************************************************
template<>
void
......@@ -555,7 +560,7 @@ RPCExecutor<PickRPC>::Execute(PickRPC *rpc)
LoadBalancer::RegisterProgressCallback(NULL, NULL);
avtTerminatingSource::RegisterInitializeProgressCallback(NULL, NULL);
avtDataObjectQuery::RegisterInitializeProgressCallback(NULL, NULL);
netmgr->Pick(rpc->GetNetId(), rpc->GetPickAtts());
netmgr->Pick(rpc->GetNetId(), rpc->GetWinId(), rpc->GetPickAtts());
rpc->SendReply(rpc->GetPickAtts());
}
CATCH2(VisItException, e)
......@@ -655,6 +660,9 @@ RPCExecutor<StartPickRPC>::Execute(StartPickRPC *rpc)
//
// Mark C. Miller, Tue Oct 19 19:44:00 PDT 2004
// Added arg to pass changed color table name
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added window id to SetWinAnnotAttsRPC
// ****************************************************************************
template<>
void
......@@ -671,11 +679,13 @@ RPCExecutor<SetWinAnnotAttsRPC>::Execute(SetWinAnnotAttsRPC *rpc)
netmgr->SetWindowAttributes(rpc->GetWindowAtts(),
rpc->GetExtentTypeString(),
rpc->GetViewExtents(),
rpc->GetChangedCtName());
rpc->GetChangedCtName(),
rpc->GetWindowID());
netmgr->SetAnnotationAttributes(rpc->GetAnnotationAtts(),
rpc->GetAnnotationObjectList(),
rpc->GetVisualCueList(),
rpc->GetFrameAndState());
rpc->GetFrameAndState(),
rpc->GetWindowID());
rpc->SendReply();
}
CATCH2(VisItException, e)
......@@ -764,6 +774,8 @@ RPCExecutor<SetWinAnnotAttsRPC>::Execute(SetWinAnnotAttsRPC *rpc)
// Mark C. Miller, Mon Aug 23 20:24:31 PDT 2004
// Moved code to get cellCountMultiplier to inside GetOutput
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added code to operate on specific window id
// ****************************************************************************
template<>
void
......@@ -799,6 +811,7 @@ RPCExecutor<ExecuteRPC>::Execute(ExecuteRPC *rpc)
bool shouldSendAbort = false;
float cellCountMultiplier;
int netId = netmgr->GetCurrentNetworkId();
int winId = netmgr->GetCurrentWindowId();
avtNullData abortDob(NULL);
// Get the output of the network manager. This does the job of
......@@ -823,8 +836,8 @@ RPCExecutor<ExecuteRPC>::Execute(ExecuteRPC *rpc)
writingData = visitTimer->StartTimer();
// set params influencing scalable rendering
int scalableThreshold = netmgr->GetScalableThreshold();
int currentTotalGlobalCellCount = netmgr->GetTotalGlobalCellCounts();
int scalableThreshold = netmgr->GetScalableThreshold(winId);
int currentTotalGlobalCellCount = netmgr->GetTotalGlobalCellCounts(winId);
int currentNetworkGlobalCellCount = 0;
bool scalableThresholdExceeded = false;
......@@ -1132,6 +1145,9 @@ RPCExecutor<DefineVirtualDatabaseRPC>::Execute(DefineVirtualDatabaseRPC *rpc)
//
// Mark C. Miller, Wed Oct 6 18:12:29 PDT 2004
// Changed bool flag for 3D annots to integer mode
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added code to operate on specific window id
// ****************************************************************************
template<>
void
......@@ -1155,7 +1171,7 @@ RPCExecutor<RenderRPC>::Execute(RenderRPC *rpc)
// do the render
avtDataObjectWriter_p writer =
netmgr->Render(rpc->GetIDs(),rpc->GetSendZBuffer(),
rpc->GetAnnotMode());
rpc->GetAnnotMode(), rpc->GetWindowID());
// Send the data back to the viewer.
engine->WriteData(rpc, writer);
......
......@@ -64,6 +64,7 @@
#include <TimingsManager.h>
#include <set>
#include <map>
using std::set;
static double RenderBalance(int numTrianglesIHave);
......@@ -96,6 +97,10 @@ static void DumpImage(avtImage_p, const char *fmt, bool allprocs=true);
// Kathleen Bonnell, Wed Jun 2 09:48:29 PDT 2004
// Initialize requireOriginalNodes.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Made the viswin part of a map of EngineVisWinInfo objects
// Removed some unnecessary initialization
//
// ****************************************************************************
NetworkManager::NetworkManager(void) : virtualDatabases()
{
......@@ -106,20 +111,8 @@ NetworkManager::NetworkManager(void) : virtualDatabases()
uniqueNetworkId = 0;
dumpRenders = false;
// stuff to support scalable rendering
viswin = new VisWindow();
annotationAttributes = *(viswin->GetAnnotationAtts());
annotationAttributes.SetUserInfoFlag(false);
annotationAttributes.SetDatabaseInfoFlag(false);
annotationAttributes.SetLegendInfoFlag(false);
annotationAttributes.SetTriadFlag(false);
annotationAttributes.SetBboxFlag(false);
annotationAttributes.SetAxesFlag(false);
annotationAttributes.SetAxesFlag2D(false);
viswin->SetAnnotationAtts(&annotationAttributes);
viswin->DisableUpdates();
// stuff to support scalable rendering. We always have window 0
viswinMap[0].viswin = new VisWindow();
}
// ****************************************************************************
......@@ -136,9 +129,16 @@ NetworkManager::NetworkManager(void) : virtualDatabases()
// Hank Childs, Mon Jan 5 16:30:04 PST 2004
// Don't assume the caches are valid.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added code to delete VisWindow objects
//
// ****************************************************************************
NetworkManager::~NetworkManager(void)
{
std::map<int, EngineVisWinInfo>::iterator it;
for (it = viswinMap.begin(); it != viswinMap.end(); it++)
delete it->second.viswin;
for (int i = 0; i < networkCache.size(); i++)
if (networkCache[i] != NULL)
delete networkCache[i];
......@@ -180,6 +180,9 @@ NetworkManager::~NetworkManager(void)
// Protected call to clear viswin and plotsCurrentlyInWindow with test
// for emptiness
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added code to delete VisWindow objects
//
// ****************************************************************************
void
NetworkManager::ClearAllNetworks(void)
......@@ -187,6 +190,13 @@ NetworkManager::ClearAllNetworks(void)
debug3 << "NetworkManager::ClearAllNetworks(void)" << endl;
int i;
std::map<int, EngineVisWinInfo>::iterator it;
for (it = viswinMap.begin(); it != viswinMap.end(); it++)
{
it->second.viswin->ClearPlots();
it->second.plotsCurrentlyInWindow.clear();
}
for (i = 0; i < networkCache.size(); i++)
{
if (networkCache[i] != NULL)
......@@ -205,12 +215,6 @@ NetworkManager::ClearAllNetworks(void)
{
globalCellCounts[i] = -1;
}
if (!plotsCurrentlyInWindow.empty())
{
viswin->ClearPlots();
plotsCurrentlyInWindow.clear();
}
}
// ****************************************************************************
......@@ -236,6 +240,9 @@ NetworkManager::ClearAllNetworks(void)
// Mark C. Miller, Mon Sep 13 18:30:26 PDT 2004
// Moved code to delete the networkCache entry to after the clearning
// of the viswin.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Modified for viswinMap object
// ****************************************************************************
void
NetworkManager::ClearNetworksWithDatabase(const std::string &db)
......@@ -256,12 +263,15 @@ NetworkManager::ClearNetworksWithDatabase(const std::string &db)
{
if (ndb->GetFilename() == db)
{
for (j = 0 ; j < plotsCurrentlyInWindow.size() ; j++)
int winID = networkCache[i]->GetWinID();
EngineVisWinInfo &viswinInfo = viswinMap[winID];
for (j = 0 ; j < viswinInfo.plotsCurrentlyInWindow.size() ; j++)
{
if (plotsCurrentlyInWindow[j] == i)
if (viswinInfo.plotsCurrentlyInWindow[j] == i)
{
viswin->ClearPlots();
plotsCurrentlyInWindow.clear();
viswinInfo.viswin->ClearPlots();
viswinInfo.plotsCurrentlyInWindow.clear();
break;
}
}
......@@ -905,9 +915,12 @@ NetworkManager::MakePlot(const string &id, const AttributeGroup *atts,
// Hank Childs, Mon Jan 5 16:04:57 PST 2004
// Make sure that the network id is always unique for each network.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Added code to set network's window ID and manage multiple VisWindow
// objects
// ****************************************************************************
int
NetworkManager::EndNetwork(void)
NetworkManager::EndNetwork(int windowID)
{
// Checking to see if the network has been built successfully.
if (workingNetnodeList.size() != 1)
......@@ -929,11 +942,22 @@ NetworkManager::EndNetwork(void)
workingNet->SetTerminalNode(workingNetnodeList[0]);
// Push the working net onto the network caches.
workingNet->SetID(uniqueNetworkId++);
workingNet->SetNetID(uniqueNetworkId++);
workingNet->SetWinID(windowID);
networkCache.push_back(workingNet);
globalCellCounts.push_back(-1);
return workingNet->GetID();
//
// If this plot this network is associated with is in a window we haven't
// seen before, make a new VisWindow for it
//
if (viswinMap.find(windowID) == viswinMap.end())
{
debug1 << "Creating new VisWindow for id=" << windowID << endl;
viswinMap[windowID].viswin = new VisWindow;
}
return workingNet->GetNetID();
}
// ****************************************************************************
......@@ -974,6 +998,9 @@ NetworkManager::CancelNetwork(void)
// Hank Childs, Mon Jan 5 16:39:06 PST 2004
// Make sure that the id requested hasn't already been cleared.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Changed workingNet->GetID to workingNet->GetNetID
//
// ****************************************************************************
void
NetworkManager::UseNetwork(int id)
......@@ -1005,10 +1032,10 @@ NetworkManager::UseNetwork(int id)
int pipelineIndex = workingNet->GetPipelineSpec()->GetPipelineIndex();
loadBalancer->ResetPipeline(pipelineIndex);
if (id != workingNet->GetID())
if (id != workingNet->GetNetID())
{
debug1 << "Internal error: network at position[" << id <<
"] does not have same id (" << workingNet->GetID() << ")"
"] does not have same id (" << workingNet->GetNetID() << ")"
<< endl;
EXCEPTION0(ImproperUseException);
}
......@@ -1044,16 +1071,42 @@ NetworkManager::GetPlot(void)
// Programmer: Hank Childs
// Creation: September 9, 2002
//
// Modifications:
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Changed workingNet->GetID to workingNet->GetNetID
//
// ****************************************************************************
int
NetworkManager::GetCurrentNetworkId(void)
NetworkManager::GetCurrentNetworkId(void) const
{
if (workingNet == NULL)
{
EXCEPTION0(ImproperUseException);
}
return workingNet->GetID();
return workingNet->GetNetID();
}
// ****************************************************************************
// Method: NetworkManager::GetCurrentWindowId
//
// Purpose:
// Gets the window id of the current network.
//
// Programmer: Mark C. Miller
// Creation: January 4, 2005
//
// ****************************************************************************
int
NetworkManager::GetCurrentWindowId(void) const
{
if (workingNet == NULL)
{
EXCEPTION0(ImproperUseException);
}
return workingNet->GetWinID();
}
// ****************************************************************************
......@@ -1070,21 +1123,30 @@ NetworkManager::GetCurrentNetworkId(void)
// Hank Childs, Thu Dec 2 09:48:29 PST 2004
// Look out for overflow.
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Modified to compute counts for networks in only the specified window
//
// ****************************************************************************
int
NetworkManager::GetTotalGlobalCellCounts(void) const
NetworkManager::GetTotalGlobalCellCounts(int winID) const
{
int i, sum = 0;
for (i = 0; i < globalCellCounts.size(); i++)
{
// Make sure we don't have an overflow issue.
if (globalCellCounts[i] == INT_MAX)
return INT_MAX;
if (globalCellCounts[i] >= 0)
sum += globalCellCounts[i];
}
return sum;
std::map<int, EngineVisWinInfo>::const_iterator it;
it = viswinMap.find(winID);
const std::vector<int> &plotsCurrentlyInWindow =
it->second.plotsCurrentlyInWindow;
for (i = 0; i < plotsCurrentlyInWindow.size(); i++)
{
// Make sure we don't have an overflow issue.
if (globalCellCounts[plotsCurrentlyInWindow[i]] == INT_MAX)
return INT_MAX;
if (globalCellCounts[plotsCurrentlyInWindow[i]] >= 0)
sum += globalCellCounts[plotsCurrentlyInWindow[i]];
}
return sum;
}
// ****************************************************************************
......@@ -1112,21 +1174,35 @@ NetworkManager::SetGlobalCellCount(int netId, int cellCount)
// Programmer: Mark C. Miller
// Creation: May 11, 2004
//
// Modifications:
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Modified to get information for specific window
//
// ****************************************************************************
int
NetworkManager::GetScalableThreshold(void) const
NetworkManager::GetScalableThreshold(int windowID) const
{
int scalableAutoThreshold;
RenderingAttributes::TriStateMode scalableActivationMode;
// since we're in a const method, we can't use the [] operator to index
// into the map directly becuase that operator will modify the map if the
// key is new
std::map<int, EngineVisWinInfo>::const_iterator it;
it = viswinMap.find(windowID);
const EngineVisWinInfo &viswinInfo = it->second;
const WindowAttributes &windowAttributes = viswinInfo.windowAttributes;
scalableAutoThreshold =
windowAttributes.GetRenderAtts().GetScalableAutoThreshold();
scalableActivationMode =
windowAttributes.GetRenderAtts().GetScalableActivationMode();
return RenderingAttributes::GetEffectiveScalableThreshold(
int t = RenderingAttributes::GetEffectiveScalableThreshold(
scalableActivationMode,
scalableAutoThreshold);
return t;
}
// ****************************************************************************
......@@ -1152,13 +1228,18 @@ NetworkManager::GetScalableThreshold(void) const
// Moved the code to clear the vis window and plots currently in the
// vis window to inside the test for non-NULL networkCache
//
// Mark C. Miller, Tue Jan 4 10:23:19 PST 2005
// Modified to manage multiple VisWindow objects
//
// ****************************************************************************
void
NetworkManager::DoneWithNetwork(int id)
{
int i;
if (id >= networkCache.size())
{
debug1 << "Internal error: asked to reuse network ID (" << id
debug1 << "Internal error: Done with network ID (" << id
<< " >= num saved networks (" << networkCache.size() << ")"
<< endl;
EXCEPTION0(ImproperUseException);
......@@ -1166,25 +1247,46 @@ NetworkManager::DoneWithNetwork(int id)
if (networkCache[id] != NULL)
{
int thisNetworksWinID = networkCache[id]->GetWinID();
for (int i = 0 ; i < plotsCurrentlyInWindow.size() ; i++)
viswinMap[thisNetworksWinID].viswin->ClearPlots();
viswinMap[thisNetworksWinID].plotsCurrentlyInWindow.clear();
//
// Delete the associated VisWindow if this is the last plot that
// references it
//
bool otherNetsUseThisWindow = false;
for (i = 0; i < networkCache.size(); i++)
{
if (plotsCurrentlyInWindow[i] == id)
if (i == id)
continue;
if (networkCache[i] && (thisNetworksWinID ==
networkCache[i]->GetWinID()))
{
viswin->ClearPlots();
plotsCurrentlyInWindow.clear();
otherNetsUseThisWindow = true;
break;
}
}
if (!otherNetsUseThisWindow && thisNetworksWinID) // never delete window 0
{
debug1 << "Deleting VisWindow for id=" << thisNetworksWinID << endl;
delete viswinMap[thisNetworksWinID].viswin;
viswinMap.erase(thisNetworksWinID);
}
networkCache[id]->ReleaseData();
networkCache[id] = NULL;
globalCellCounts[id] = -1;
}