Cube  Diff

Differences From Artifact [1613c5c115]:

To Artifact [f9de6a81da]:


1
2
3
4
5

6

7
8
9
10

11
12

13
14

15
16
17
18
19
20
21


22
23


24


1

2
3

4
5
6
7
8
9
10

11
12

13
14
15
16
17
18


19
20
21

22
23
24
-
-

-

+
-
+




+

-
+

-
+





-
-
+
+

-
+
+

#include <vector>

#import "cube.h"
#import "protos.h"

static void **queue;
static std::vector<void (^)(void)> *queue;
static size_t queueCount;

void
enqueueInit(void (^init)(void))
{
	queue = realloc(queue, (queueCount + 1) * sizeof(void *));
	if (queue == NULL)
		queue = new std::vector<void (^)(void)>();
		fatal(@"cannot allocate init queue");

	queue->push_back(init);
	queue[queueCount++] = (__bridge void *)init;
}

void
processInitQueue(void)
{
	for (auto &init : *queue)
		init();
	for (size_t i = 0; i < queueCount; i++)
		((__bridge void (^)())queue[i])();

	queue->clear();
	free(queue);
	queueCount = 0;
}