summaryrefslogtreecommitdiff
path: root/indra/newview/llmediadataclient.cpp
diff options
context:
space:
mode:
authorRick Pasetto <rick@lindenlab.com>2009-11-10 17:24:02 -0800
committerRick Pasetto <rick@lindenlab.com>2009-11-10 17:24:02 -0800
commit353ac3969efc5bda81b34f4edb3756dd6ced0412 (patch)
tree467c97cef1f760672503096c2fed3f27618bdc68 /indra/newview/llmediadataclient.cpp
parent2420a4b90c964bcc2c928c4593652fdf81e0e20f (diff)
FIX DEV-41991: do not allow media settings panel to come up if media data is in flight
Review #33 This change marks the current selection "not editable" if any objects in the selection are currently "in flight" (i.e. their media data has not been fetched yet, or is in the process of being fetched). This involved adding API to LLMediaDataClient to query whether an object is in the process of being fetched (i.e. in the queue). I've added a unit test for this new API.
Diffstat (limited to 'indra/newview/llmediadataclient.cpp')
-rwxr-xr-xindra/newview/llmediadataclient.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp
index 512104a2f4..986c14acff 100755
--- a/indra/newview/llmediadataclient.cpp
+++ b/indra/newview/llmediadataclient.cpp
@@ -324,6 +324,22 @@ std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::PriorityQueue
return s;
}
+// find the given object in the queue.
+bool LLMediaDataClient::PriorityQueue::find(const LLMediaDataClientObject::ptr_t &obj) const
+{
+ std::vector<LLMediaDataClient::request_ptr_t>::const_iterator iter = c.begin();
+ std::vector<LLMediaDataClient::request_ptr_t>::const_iterator end = c.end();
+ while (iter < end)
+ {
+ if (obj->getID() == (*iter)->getObject()->getID())
+ {
+ return true;
+ }
+ iter++;
+ }
+ return false;
+}
+
//////////////////////////////////////////////////////////////////////////////////////
//
// LLMediaDataClient::QueueTimer
@@ -491,6 +507,11 @@ bool LLMediaDataClient::isEmpty() const
return (NULL == pRequestQueue) ? true : pRequestQueue->empty();
}
+bool LLMediaDataClient::isInQueue(const LLMediaDataClientObject::ptr_t &object) const
+{
+ return (NULL == pRequestQueue) ? false : pRequestQueue->find(object);
+}
+
//////////////////////////////////////////////////////////////////////////////////////
//
// LLObjectMediaDataClient