mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-20 23:58:54 +02:00
tests: Fix data races in refcount/signals.c
This commit is contained in:
@@ -12,8 +12,6 @@
|
|||||||
#define MY_IS_TEST_CLASS(tclass) (G_TYPE_CHECK_CLASS_TYPE ((tclass), G_TYPE_TEST))
|
#define MY_IS_TEST_CLASS(tclass) (G_TYPE_CHECK_CLASS_TYPE ((tclass), G_TYPE_TEST))
|
||||||
#define MY_TEST_GET_CLASS(test) (G_TYPE_INSTANCE_GET_CLASS ((test), G_TYPE_TEST, GTestClass))
|
#define MY_TEST_GET_CLASS(test) (G_TYPE_INSTANCE_GET_CLASS ((test), G_TYPE_TEST, GTestClass))
|
||||||
|
|
||||||
static GRand *grand;
|
|
||||||
|
|
||||||
typedef struct _GTest GTest;
|
typedef struct _GTest GTest;
|
||||||
typedef struct _GTestClass GTestClass;
|
typedef struct _GTestClass GTestClass;
|
||||||
|
|
||||||
@@ -34,7 +32,7 @@ struct _GTestClass
|
|||||||
};
|
};
|
||||||
|
|
||||||
static GType my_test_get_type (void);
|
static GType my_test_get_type (void);
|
||||||
static volatile gboolean stopping;
|
static gboolean stopping;
|
||||||
|
|
||||||
/* Element signals and args */
|
/* Element signals and args */
|
||||||
enum
|
enum
|
||||||
@@ -87,8 +85,6 @@ my_test_get_type (void)
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
grand = g_rand_new();
|
|
||||||
|
|
||||||
test_type = g_type_register_static (G_TYPE_OBJECT, "GTest",
|
test_type = g_type_register_static (G_TYPE_OBJECT, "GTest",
|
||||||
&test_info, 0);
|
&test_info, 0);
|
||||||
}
|
}
|
||||||
@@ -221,7 +217,7 @@ my_test_do_signal3 (GTest * test)
|
|||||||
static void
|
static void
|
||||||
my_test_do_prop (GTest * test)
|
my_test_do_prop (GTest * test)
|
||||||
{
|
{
|
||||||
test->value = g_rand_int (grand);
|
test->value = g_random_int ();
|
||||||
g_object_notify (G_OBJECT (test), "test-prop");
|
g_object_notify (G_OBJECT (test), "test-prop");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +226,7 @@ run_thread (GTest * test)
|
|||||||
{
|
{
|
||||||
gint i = 1;
|
gint i = 1;
|
||||||
|
|
||||||
while (!stopping) {
|
while (!g_atomic_int_get (&stopping)) {
|
||||||
if (TESTNUM == 1)
|
if (TESTNUM == 1)
|
||||||
my_test_do_signal1 (test);
|
my_test_do_signal1 (test);
|
||||||
if (TESTNUM == 2)
|
if (TESTNUM == 2)
|
||||||
@@ -290,7 +286,7 @@ main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
g_usleep (5000000);
|
g_usleep (5000000);
|
||||||
|
|
||||||
stopping = TRUE;
|
g_atomic_int_set (&stopping, TRUE);
|
||||||
|
|
||||||
g_print ("\nstopping\n");
|
g_print ("\nstopping\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user