- memcpy(newarray, mqt_array, mqt_total * sizeof(meshqueue_t));
- Mem_Free(mqt_array);
- }
- mqt_array = newarray;
- mqt_total = newtotal;
-}
-
-void R_MeshQueue_Add(void (*callback)(const entity_render_t *ent, const rtlight_t *rtlight, int numsurfaces, int *surfacelist), const entity_render_t *ent, int surfacenumber, const rtlight_t *rtlight)
-{
- // this is only used by one piece of code in prvm_cmds, why is it used at all?
- meshqueue_t *mq, **mqnext;
- if (r_meshqueue_immediaterender.integer)
- {
- callback(ent, rtlight, 1, &surfacenumber);
- return;
- }
- if (mq_count >= mq_total)
- R_MeshQueue_Render();
- mq = &mq_array[mq_count++];
- mq->callback = callback;
- mq->ent = ent;
- mq->surfacenumber = surfacenumber;
- mq->rtlight = rtlight;
-
- if (r_meshqueue_sort.integer)
- {
- // bubble-insert sort into meshqueue
- for(mqnext = &mq_listhead;*mqnext;mqnext = &(*mqnext)->next)
+ int newtotal = max(1024, mqt_total * 2);
+ meshqueue_t *newarray = (meshqueue_t *)Mem_Alloc(cls.permanentmempool, newtotal * sizeof(meshqueue_t));
+ if (mqt_array)