33 #include <nsAutoLock.h>
34 #include <nsArrayUtils.h>
35 #include <nsComponentManagerUtils.h>
37 #include <nsServiceManagerUtils.h>
38 #include <nsStringGlue.h>
57 sbMediacoreShuffleSequenceGenerator::OnGenerateSequence(
sbIMediaListView *aView,
58 PRUint32 *aSequenceLength,
61 NS_ENSURE_ARG_POINTER(aView);
62 NS_ENSURE_ARG_POINTER(aSequenceLength);
63 NS_ENSURE_ARG_POINTER(aSequence);
69 nsresult rv = aView->GetLength(&length);
70 NS_ENSURE_SUCCESS(rv, rv);
73 *aSequence = (PRUint32*)NS_Alloc(
sizeof(PRUint32) * length);
74 *aSequenceLength = length;
77 std::vector<PRUint32> pool;
81 for(PRUint32 current = 0; current < length; ++current) {
82 pool.push_back(current);
86 std::srand(std::clock());
89 random_shuffle(pool.begin(), pool.end());
92 copy(pool.begin(), pool.end(), *aSequence);