Example #1
0
File: matcher.c Project: Cordia/vte
/* Create and init matcher. */
struct _vte_matcher *
_vte_matcher_new(const char *emulation, struct _vte_termcap *termcap)
{
	struct _vte_matcher *ret = NULL;
	g_static_mutex_lock(&_vte_matcher_mutex);

	if (emulation == NULL) {
		emulation = "";
	}

	if (_vte_matcher_cache == NULL) {
		_vte_matcher_cache = g_cache_new(_vte_matcher_create,
				_vte_matcher_destroy,
				(GCacheDupFunc) g_strdup, g_free,
				g_str_hash, g_direct_hash, g_str_equal);
	}

	ret = g_cache_insert(_vte_matcher_cache, (gpointer) emulation);

	if (ret->match == NULL) {
		ret->impl = ret->impl->klass->create();
		ret->match = ret->impl->klass->match;
		_vte_matcher_init(ret, emulation, termcap);
	}

	g_static_mutex_unlock(&_vte_matcher_mutex);
	return ret;
}
Example #2
0
static void
gtk_gc_init (void)
{
  initialize = FALSE;

  gc_cache = g_cache_new ((GCacheNewFunc) gtk_gc_new,
			  (GCacheDestroyFunc) gtk_gc_destroy,
			  (GCacheDupFunc) gtk_gc_key_dup,
			  (GCacheDestroyFunc) gtk_gc_key_destroy,
			  (GHashFunc) gtk_gc_key_hash,
			  (GHashFunc) gtk_gc_value_hash,
			  (GCompareFunc) gtk_gc_key_compare);

  gc_drawable_ht = g_hash_table_new ((GHashFunc) gtk_gc_drawable_hash,
				     (GCompareFunc) gtk_gc_drawable_compare);
}
Example #3
0
File: vtetc.c Project: Cordia/vte
VteTermcap *
_vte_termcap_new(const char *filename)
{
  VteTermcap *result;

  g_static_mutex_lock (&_vte_termcap_mutex);

  if (_vte_termcap_cache == NULL)
    _vte_termcap_cache = g_cache_new((GCacheNewFunc) _vte_termcap_create,
                                     (GCacheDestroyFunc) _vte_termcap_destroy,
                                     (GCacheDupFunc) g_strdup,
                                     (GCacheDestroyFunc) g_free,
                                     g_str_hash, g_direct_hash, g_str_equal);

  result = g_cache_insert (_vte_termcap_cache, (gpointer) filename);

  g_static_mutex_unlock (&_vte_termcap_mutex);

  return result;
}
Example #4
0
void cache_test()
{
	char *str1,*str2,*str3;
	GCache *cache = NULL;
	gint user_data = 0;
	
	g_assert((cache = g_cache_new( (GCacheNewFunc) g_ascii_strup,
					g_free, (GCacheDupFunc) g_strdup, g_free, g_str_hash, 
    				g_str_hash, g_str_equal)) != NULL);
    				
    str1 = g_cache_insert(cache,"test");
    
    g_assert(!strcmp("TEST",str1));
    
	str2 = g_cache_insert(cache,"test");

	g_assert(!strcmp("TEST",str1));
	
	str3 = g_cache_insert(cache,"glib");
	
	g_assert(!strcmp("GLIB",str3));
	
	g_cache_key_foreach (cache,(GHFunc)function,&user_data);
	
	//g_cache_key_foreach would call function twice and make user_data == 2
	g_assert(user_data == 2);
	
	g_cache_value_foreach (cache,(GHFunc)function,&user_data);
	
	//g_cache_value_foreach would call function twice and make user_data == 4
	g_assert(user_data == 4);
	
	g_cache_remove(cache,str1);
	g_cache_remove(cache,str2);	
	g_cache_remove(cache,str3);	
	
	g_cache_destroy(cache);
	
}
Example #5
0
	else if (strcmp (file, "<default-inradio>") == 0)
	   pixbuf = gdk_pixbuf_from_pixdata (&inradio_img, TRUE, &err);
	else
		pixbuf = gdk_pixbuf_new_from_file (file, &err);
	if (err != NULL)
		g_warning ("Unable to load \"%s\" (%s).", file, err->message);
	return pixbuf;
}


static void
mgicchikn_rc_style_base_init (MgicChiknRcStyleClass * class)
{
	class->raw_pixbufs =
		g_cache_new ((GCacheNewFunc) load_raw_pixbuf,
					 g_object_unref, (GCacheDupFunc) g_strdup,
					 g_free, g_str_hash, g_direct_hash, g_str_equal);
}


static void
mgicchikn_rc_style_base_finalize (MgicChiknRcStyleClass * class)
{
	g_cache_destroy (class->raw_pixbufs);
}


static void
mgicchikn_rc_style_class_init (MgicChiknRcStyleClass * class)
{
	GtkRcStyleClass *rc_style_class = GTK_RC_STYLE_CLASS (class);