예제 #1
0
TEST_F(GQueueTest, reverse)
{
	int testData1 = 42;
	int testData2 = 1337;
	int testData3 = 27;

	GList *list = NULL;
	list = g_list_append(list, &testData1);
	list = g_list_append(list, &testData2);
	list = g_list_append(list, &testData3);
	queue->head = list;
	queue->tail = list->next->next;
	queue->length = 3;

	g_queue_reverse(queue);
	ASSERT_EQ(3, queue->length) << "reversed queue should still have length three";
	ASSERT_EQ(list, queue->tail) << "reversed queue tail should be original head";
	ASSERT_EQ(&testData3, queue->head->data) << "first reversed queue element data should be set";
	ASSERT_TRUE(queue->head->prev == NULL) << "first reversed queue element should not have a previous element";
	ASSERT_TRUE(queue->head->next != NULL) << "first reversed queue element should have a next element";
	ASSERT_EQ(&testData2, queue->head->next->data) << "second reversed queue element data should be set";
	ASSERT_EQ(queue->head, queue->head->next->prev) << "second reversed queue element should have first element as previous";
	ASSERT_TRUE(queue->head->next->next != NULL) << "second queue element should have a next element";
	ASSERT_EQ(queue->tail, queue->head->next->next) << "last element should be equal to queue tail";
	ASSERT_EQ(&testData1, queue->tail->data) << "third reversed queue element data should be set";
	ASSERT_EQ(queue->head->next, queue->tail->prev) << "third reversed queue element should have second element as previous";
	ASSERT_TRUE(queue->tail->next == NULL) << "third reversed queue element should not have a next element";
	g_queue_reverse(queue);
	ASSERT_EQ(list, queue->head) << "reverse of reversed queue should result in original queue";
}
예제 #2
0
static void
on_scan_end (SymbolDBEngine *dbe, gint process_id, gpointer data)
{
	SymbolDBViewLocals *dbvl;
	SymbolDBViewLocalsPriv *priv;
	TraverseData *tdata;

	dbvl = SYMBOL_DB_VIEW_LOCALS (data);
	g_return_if_fail (dbvl != NULL);
	priv = dbvl->priv;

	if (priv->display_nothing)
	{
		return;
	}
	
	tdata = g_new (TraverseData, 1);
	tdata->dbvl = dbvl;
	tdata->data = dbe;
	
	/*DEBUG_PRINT ("%s", "locals: on_scan_end");*/
	if (priv->symbols_inserted_ids != NULL)
	{
		if (g_queue_get_length (priv->symbols_inserted_ids) > 0) 
		{
			/* reverswe the queue */
			g_queue_reverse (priv->symbols_inserted_ids);
			
			priv->insertion_idle_handler = g_idle_add_full (G_PRIORITY_LOW, 
						 (GSourceFunc) consume_symbols_inserted_queue_idle,
						 (gpointer) tdata,
						 (GDestroyNotify) consume_symbols_inserted_queue_idle_destroy);
		}
	}
}
예제 #3
0
/**
 * anjuta_shell_thaw:
 * @shell: A #AnjutaShell interface.
 * @error: Error propagation object.
 *
 * Reduces the freeze count by one and performs pending widget additions
 * when the count reaches 0.
 */
void
anjuta_shell_thaw (AnjutaShell *shell, GError **error)
{
    gint freeze_count;

    g_return_if_fail (shell != NULL);
    freeze_count = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (shell),
                                    "__freeze_count"));
    freeze_count--;
    if (freeze_count < 0)
        freeze_count = 0;
    g_object_set_data (G_OBJECT (shell), "__freeze_count",
                       GINT_TO_POINTER (freeze_count));

    if (freeze_count <= 0)
    {
        /* Add all pending widgets */
        /* DEBUG_PRINT ("%s", "Thawing shell ..."); */

        GQueue *queue;
        queue = g_object_get_data (G_OBJECT (shell), "__widget_queue");
        if (queue)
        {
            g_queue_reverse (queue);
            g_queue_foreach (queue, (GFunc)on_widget_data_add, shell);
            g_object_set_data (G_OBJECT (shell), "__widget_queue", NULL);
        }
    }
}