glib/tsrc/BC/tests/refcount/properties.c
changeset 72 403e7f6ed6c5
parent 0 e4d67989cc36
equal deleted inserted replaced
71:28ccaba883f4 72:403e7f6ed6c5
    10 #include "mrt2_glib2_test.h"
    10 #include "mrt2_glib2_test.h"
    11 #endif /*SYMBIAN*/
    11 #endif /*SYMBIAN*/
    12 
    12 
    13 
    13 
    14 
    14 
    15 #define G_TYPE_TEST               (g_test_get_type ())
    15 #define G_TYPE_TEST               (my_test_get_type ())
    16 #define G_TEST(test)              (G_TYPE_CHECK_INSTANCE_CAST ((test), G_TYPE_TEST, GTest))
    16 #define MY_TEST(test)              (G_TYPE_CHECK_INSTANCE_CAST ((test), G_TYPE_TEST, GTest))
    17 #define G_IS_TEST(test)           (G_TYPE_CHECK_INSTANCE_TYPE ((test), G_TYPE_TEST))
    17 #define MY_IS_TEST(test)           (G_TYPE_CHECK_INSTANCE_TYPE ((test), G_TYPE_TEST))
    18 #define G_TEST_CLASS(tclass)      (G_TYPE_CHECK_CLASS_CAST ((tclass), G_TYPE_TEST, GTestClass))
    18 #define MY_TEST_CLASS(tclass)      (G_TYPE_CHECK_CLASS_CAST ((tclass), G_TYPE_TEST, GTestClass))
    19 #define G_IS_TEST_CLASS(tclass)   (G_TYPE_CHECK_CLASS_TYPE ((tclass), G_TYPE_TEST))
    19 #define MY_IS_TEST_CLASS(tclass)   (G_TYPE_CHECK_CLASS_TYPE ((tclass), G_TYPE_TEST))
    20 #define G_TEST_GET_CLASS(test)    (G_TYPE_INSTANCE_GET_CLASS ((test), G_TYPE_TEST, GTestClass))
    20 #define MY_TEST_GET_CLASS(test)    (G_TYPE_INSTANCE_GET_CLASS ((test), G_TYPE_TEST, GTestClass))
    21 
    21 
    22 enum {
    22 enum {
    23   PROP_0,
    23   PROP_0,
    24   PROP_DUMMY
    24   PROP_DUMMY
    25 };
    25 };
    39 struct _GTestClass
    39 struct _GTestClass
    40 {
    40 {
    41   GObjectClass parent_class;
    41   GObjectClass parent_class;
    42 };
    42 };
    43 
    43 
    44 static GType g_test_get_type (void);
    44 static GType my_test_get_type (void);
    45 static volatile gboolean stopping;
    45 static volatile gboolean stopping;
    46 
    46 
    47 static void g_test_class_init (GTestClass * klass);
    47 static void my_test_class_init (GTestClass * klass);
    48 static void g_test_init (GTest * test);
    48 static void my_test_init (GTest * test);
    49 static void g_test_dispose (GObject * object);
    49 static void my_test_dispose (GObject * object);
    50 static void g_test_get_property (GObject    *object,
    50 static void my_test_get_property (GObject    *object,
    51 				 guint       prop_id,
    51                                   guint       prop_id,
    52 				 GValue     *value,
    52                                   GValue     *value,
    53 				 GParamSpec *pspec);
    53                                   GParamSpec *pspec);
    54 static void g_test_set_property (GObject      *object,
    54 static void my_test_set_property (GObject      *object,
    55 				 guint         prop_id,
    55                                   guint         prop_id,
    56 				 const GValue *value,
    56                                   const GValue *value,
    57 				 GParamSpec   *pspec);
    57                                   GParamSpec   *pspec);
    58 
    58 
    59 static GObjectClass *parent_class = NULL;
    59 static GObjectClass *parent_class = NULL;
    60 
    60 
    61 static GType
    61 static GType
    62 g_test_get_type (void)
    62 my_test_get_type (void)
    63 {
    63 {
    64   static GType test_type = 0;
    64   static GType test_type = 0;
    65 
    65 
    66   if (!test_type) {
    66   if (!test_type) {
    67     static const GTypeInfo test_info = {
    67     static const GTypeInfo test_info = {
    68       sizeof (GTestClass),
    68       sizeof (GTestClass),
    69       NULL,
    69       NULL,
    70       NULL,
    70       NULL,
    71       (GClassInitFunc) g_test_class_init,
    71       (GClassInitFunc) my_test_class_init,
    72       NULL,
    72       NULL,
    73       NULL,
    73       NULL,
    74       sizeof (GTest),
    74       sizeof (GTest),
    75       0,
    75       0,
    76       (GInstanceInitFunc) g_test_init,
    76       (GInstanceInitFunc) my_test_init,
    77       NULL
    77       NULL
    78     };
    78     };
    79 
    79 
    80     test_type = g_type_register_static (G_TYPE_OBJECT, "GTest", &test_info, 0);
    80     test_type = g_type_register_static (G_TYPE_OBJECT, "GTest", &test_info, 0);
    81   }
    81   }
    82   return test_type;
    82   return test_type;
    83 }
    83 }
    84 
    84 
    85 static void
    85 static void
    86 g_test_class_init (GTestClass * klass)
    86 my_test_class_init (GTestClass * klass)
    87 {
    87 {
    88   GObjectClass *gobject_class;
    88   GObjectClass *gobject_class;
    89 
    89 
    90   gobject_class = (GObjectClass *) klass;
    90   gobject_class = (GObjectClass *) klass;
    91 
    91 
    92   parent_class = g_type_class_ref (G_TYPE_OBJECT);
    92   parent_class = g_type_class_ref (G_TYPE_OBJECT);
    93 
    93 
    94   gobject_class->dispose = g_test_dispose;
    94   gobject_class->dispose = my_test_dispose;
    95   gobject_class->get_property = g_test_get_property;
    95   gobject_class->get_property = my_test_get_property;
    96   gobject_class->set_property = g_test_set_property;
    96   gobject_class->set_property = my_test_set_property;
    97 
    97 
    98   g_object_class_install_property (gobject_class,
    98   g_object_class_install_property (gobject_class,
    99 				   PROP_DUMMY,
    99 				   PROP_DUMMY,
   100 				   g_param_spec_int ("dummy",
   100 				   g_param_spec_int ("dummy",
   101 						     NULL, 
   101 						     NULL, 
   103 						     0, G_MAXINT, 0,
   103 						     0, G_MAXINT, 0,
   104 						     G_PARAM_READWRITE));
   104 						     G_PARAM_READWRITE));
   105 }
   105 }
   106 
   106 
   107 static void
   107 static void
   108 g_test_init (GTest * test)
   108 my_test_init (GTest * test)
   109 {
   109 {
   110   static guint static_id = 1;
   110   static guint static_id = 1;
   111   test->id = static_id++;
   111   test->id = static_id++;
   112 }
   112 }
   113 
   113 
   114 static void
   114 static void
   115 g_test_dispose (GObject * object)
   115 my_test_dispose (GObject * object)
   116 {
   116 {
   117   GTest *test;
   117   GTest *test;
   118 
   118 
   119   test = G_TEST (object);
   119   test = MY_TEST (object);
   120 
   120 
   121   G_OBJECT_CLASS (parent_class)->dispose (object);
   121   G_OBJECT_CLASS (parent_class)->dispose (object);
   122 }
   122 }
   123 
   123 
   124 static void 
   124 static void 
   125 g_test_get_property (GObject    *object,
   125 my_test_get_property (GObject    *object,
   126 		     guint       prop_id,
   126                       guint       prop_id,
   127 		     GValue     *value,
   127                       GValue     *value,
   128 		     GParamSpec *pspec)
   128                       GParamSpec *pspec)
   129 {
   129 {
   130   GTest *test;
   130   GTest *test;
   131 
   131 
   132   test = G_TEST (object);
   132   test = MY_TEST (object);
   133 
   133 
   134   switch (prop_id)
   134   switch (prop_id)
   135     {
   135     {
   136     case PROP_DUMMY:
   136     case PROP_DUMMY:
   137       g_value_set_int (value, test->dummy);
   137       g_value_set_int (value, test->dummy);
   141       break;
   141       break;
   142     }
   142     }
   143 }
   143 }
   144 
   144 
   145 static void 
   145 static void 
   146 g_test_set_property (GObject      *object,
   146 my_test_set_property (GObject      *object,
   147 		     guint         prop_id,
   147                       guint         prop_id,
   148 		     const GValue *value,
   148                       const GValue *value,
   149 		     GParamSpec   *pspec)
   149                       GParamSpec   *pspec)
   150 {
   150 {
   151   GTest *test;
   151   GTest *test;
   152 
   152 
   153   test = G_TEST (object);
   153   test = MY_TEST (object);
   154 
   154 
   155   switch (prop_id)
   155   switch (prop_id)
   156     {
   156     {
   157     case PROP_DUMMY:
   157     case PROP_DUMMY:
   158       test->dummy = g_value_get_int (value);
   158       test->dummy = g_value_get_int (value);
   167 dummy_notify (GObject    *object,
   167 dummy_notify (GObject    *object,
   168               GParamSpec *pspec)
   168               GParamSpec *pspec)
   169 {
   169 {
   170   GTest *test;
   170   GTest *test;
   171 
   171 
   172   test = G_TEST (object);
   172   test = MY_TEST (object);
   173 
   173 
   174   test->count++;  
   174   test->count++;  
   175 }
   175 }
   176 
   176 
   177 static void
   177 static void
   178 g_test_do_property (GTest * test)
   178 my_test_do_property (GTest * test)
   179 {
   179 {
   180   gint dummy;
   180   gint dummy;
   181 
   181 
   182   g_object_get (test, "dummy", &dummy, NULL);
   182   g_object_get (test, "dummy", &dummy, NULL);
   183   g_object_set (test, "dummy", dummy + 1, NULL);
   183   g_object_set (test, "dummy", dummy + 1, NULL);
   187 run_thread (GTest * test)
   187 run_thread (GTest * test)
   188 {
   188 {
   189   gint i = 1;
   189   gint i = 1;
   190   
   190   
   191   while (!stopping) {
   191   while (!stopping) {
   192     g_test_do_property (test);
   192     my_test_do_property (test);
   193     if ((i++ % 10000) == 0)
   193     if ((i++ % 10000) == 0)
   194       {
   194       {
   195         g_print (".%c", 'a' + test->id);
   195         g_print (".%c", 'a' + test->id);
   196         g_thread_yield(); /* force context switch */
   196         g_thread_yield(); /* force context switch */
   197       }
   197       }
   210 
   210 
   211   #ifdef SYMBIAN
   211   #ifdef SYMBIAN
   212   
   212   
   213   g_log_set_handler (NULL,  G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, &mrtLogHandler, NULL);
   213   g_log_set_handler (NULL,  G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, &mrtLogHandler, NULL);
   214   g_set_print_handler(mrtPrintHandler);
   214   g_set_print_handler(mrtPrintHandler);
   215   #endif /*SYMBIAN*/
   215   #endif /*__SYMBIAN32__*/
   216 	  
       
   217 
       
   218   g_thread_init (NULL);
   216   g_thread_init (NULL);
   219   //g_print ("START: %s\n", argv[0]);
   217   //g_print ("START: %s\n", argv[0]);
   220   g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | g_log_set_always_fatal (G_LOG_FATAL_MASK));
   218   g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | g_log_set_always_fatal (G_LOG_FATAL_MASK));
   221   g_type_init ();
   219   g_type_init ();
   222 
   220