<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-1332</id>
	<title>Nabble - Gtk+ - Dev - General</title>
	<updated>2009-12-02T15:53:30Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Gtk+---Dev---General-f1332.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gtk%2B---Dev---General-f1332.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26618784</id>
	<title>Re: differences between Glade and GtkBuilder</title>
	<published>2009-12-02T15:53:30Z</published>
	<updated>2009-12-02T15:53:30Z</updated>
	<author>
		<name>Tristan Van Berkom</name>
	</author>
	<content type="html">On Wed, Dec 2, 2009 at 6:52 PM, Shawn Bakhtiar &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26618784&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;shashaness@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;div&gt;[...]&lt;br&gt;&lt;br&gt;Note that this list is about the development of GTK+ itself, please address gtk-app-devel-list&lt;br&gt;
or gtk-list in the future for help using the GTK+ apis.&lt;br&gt; &lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;div&gt;I&amp;#39;m almost certain, that with glade you would load the xml (containing many top levels), then, call get the object you wanted out (which at that time it would construct and realize the widget making it visible)&lt;div&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;It seems with GtkBuilder loading the XML and realizing it are done in the same step, which makes it so that each individual top level has to be in its own file? &lt;/div&gt;&lt;div&gt;Does it not make more sense to have a function that load the XML without realizing anything, then, as objects are requested, doing the actual construction and realization?&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;br&gt;FYI libglade and GtkBuilder work the same way in this respect;&lt;br&gt;&lt;br&gt;Parsing the file builds the widget hierarchy.&lt;br&gt;&lt;br&gt;If your widgets are getting realized in the process of parsing&lt;br&gt;
the file, it means that one of your toplevel widgets is set to be&lt;br&gt;visible at startup time (as the builder/libglade sets the toplevel to&lt;br&gt;be visible, this triggers the realize) - you can deffer the realization&lt;br&gt;of your widgets by building the toplevels in your project with the&lt;br&gt;
&amp;quot;visible&amp;quot; property set to False (and then showing/realizing them at a later&lt;br&gt;time)&lt;br&gt;&lt;br&gt;Cheers,&lt;br&gt;           -Tristan&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26618784&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%28no-subject%29-tp26596301p26618784.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26616406</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T13:03:15Z</published>
	<updated>2009-12-02T13:03:15Z</updated>
	<author>
		<name>Colin Walters</name>
	</author>
	<content type="html">On Wed, Dec 2, 2009 at 8:38 PM, Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616406&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This particular instance is fixed, but there can be a lot more out
&lt;br&gt;&amp;gt; there. Why force every app to add this check when we could do it
&lt;br&gt;&amp;gt; ourselves.
&lt;br&gt;&lt;br&gt;I'm not objecting to defaulting to working around this bug; it's
&lt;br&gt;certainly possible other applications do it. &amp;nbsp;However the docs are
&lt;br&gt;pretty clear on how to call g_thread_init, and I was doing it wrong =)
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616406&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26616406.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26616251</id>
	<title>RE: differences between Glade and GtkBuilder</title>
	<published>2009-12-02T12:52:54Z</published>
	<updated>2009-12-02T12:52:54Z</updated>
	<author>
		<name>sbaka</name>
	</author>
	<content type="html">&lt;html&gt;
&lt;head&gt;

&lt;/head&gt;
&lt;body class='hmmessage'&gt;
&lt;br&gt;&lt;br&gt;Yes. They are all set to visible.&lt;br&gt;&lt;br&gt;&lt;div&gt;I'll change them in the GUI and see if that makes a difference.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I still think something in the process has changes, at least from the &quot;user&quot; perspective.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I'm almost certain, that with glade you would load the xml (containing many top levels), then, call get the object you wanted out (which at that time it would construct and realize the widget making it visible)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;It seems with GtkBuilder loading the XML and realizing it are done in the same step, which makes it so that each individual top level has to be in its own file?&amp;nbsp;&lt;/div&gt;&lt;div&gt;Does it not make more sense to have a function that load the XML without realizing anything, then, as objects are requested, doing the actual construction and realization?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table style=&quot;border-top:1px solid black;font-weight:bold;font-family:'Segoe UI',Tahoma,san-serif&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://im.live.com/Messenger/IM/Home/?source=EML_WLHM_GreaterGood&quot; style=&quot;font-size:9pt;color:#0184CB;text-decoration:none&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;&lt;img style=&quot;border-style:none&quot; src=&quot;http://gfx1.hotmail.com/mail/w4/pr01/ltr/i_charity.gif&quot; alt=&quot;i'm&quot;&gt; EMAILING FOR THE GREATER GOOD&lt;br&gt;&lt;span style=&quot;padding:0px 24px;font-size:8pt;color:#3FB555;text-decoration:underline&quot;&gt;Join me&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Subject: Re: &lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616251&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;scott@...&lt;/a&gt;&lt;br&gt;&amp;gt; Date: Wed, 2 Dec 2009 13:37:42 -0500&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616251&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;shashaness@...&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; On Dec 1, 2009, at 1:01 PM, Shawn Bakhtiar wrote:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; &amp;gt; Previously, I was able to open a Glade XML file with multiple top level windows, and only load the specific window I wanted from within that file. I have tried to re-write this routine, however, every time a call is made to gtk_builder_add_from_file it not only loads the file but it also loads and displays ALL the windows in that file. &lt;br&gt;&amp;gt; &amp;gt; &lt;br&gt;&amp;gt; &amp;gt; Should this not work like glade did before, where you would load the file, then call the objects you wanted to be displayed?&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; Do you have the &quot;visible&quot; property set for all of the windows in the buildable xml?&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; glade would also always construct all of the windows in the xml, but i think there was a default to *not* visible.  (It would also construct them only when you parse the xml, so if you let them be destroyed, you had to parse the file again.  I haven't used buildable enough to tell you if it behaves that way.)&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; --&lt;br&gt;&amp;gt; I've been using emacs for 20+ years and have barely touched lisp.  I wouldn't know lambda calculus if it took all its clothes off and waved a placard that reads &quot;I am lambda calculus&quot; in blinking 48-point Comic Sans.&lt;br&gt;&amp;gt;   -- Dave Hodgkinson, on london.pm&lt;br&gt;&amp;gt; &lt;/div&gt;&lt;/div&gt; 		 	   		  &lt;/body&gt;
&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616251&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%28no-subject%29-tp26596301p26616251.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26616005</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T12:38:12Z</published>
	<updated>2009-12-02T12:38:12Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Wed, 2009-12-02 at 18:01 +0000, Colin Walters wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, Dec 2, 2009 at 11:03 AM, Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616005&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Running with this patch i ran into an issue while building
&lt;br&gt;&amp;gt; gnome-shell:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;GEN &amp;nbsp; &amp;nbsp;Gdm-1.0.gir
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; GThread-ERROR **: GThread system may only be initialized once.
&lt;br&gt;&amp;gt; &amp;gt; aborting...
&lt;br&gt;&amp;gt; &amp;gt; Command '['/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/Gdm-1.0',
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; '--introspect-dump=/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/typ
&lt;br&gt;&amp;gt; es.txt,/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/dump.xml']'
&lt;br&gt;&amp;gt; returned non-zero exit status -5
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Not sure exactly what crashed, but obviously something ran:
&lt;br&gt;&amp;gt; &amp;gt; g_type_init() and then g_thread_init(). Maybe we need to make this a
&lt;br&gt;&amp;gt; &amp;gt; non-fatal warning?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Nah, just a bug in the dumper. &amp;nbsp;Fixed:
&lt;/div&gt;&lt;br&gt;This particular instance is fixed, but there can be a lot more out
&lt;br&gt;there. Why force every app to add this check when we could do it
&lt;br&gt;ourselves.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616005&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616005&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's a genetically engineered neurotic boxer with a robot buddy named Sparky. 
&lt;br&gt;She's a warm-hearted out-of-work advertising executive with someone else's 
&lt;br&gt;memories. They fight crime! 
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26616005&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26616005.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26613476</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T10:01:14Z</published>
	<updated>2009-12-02T10:01:14Z</updated>
	<author>
		<name>Colin Walters</name>
	</author>
	<content type="html">On Wed, Dec 2, 2009 at 11:03 AM, Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26613476&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Running with this patch i ran into an issue while building gnome-shell:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  GEN    Gdm-1.0.gir
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; GThread-ERROR **: GThread system may only be initialized once.
&lt;br&gt;&amp;gt; aborting...
&lt;br&gt;&amp;gt; Command '['/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/Gdm-1.0',
&lt;br&gt;&amp;gt; '--introspect-dump=/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/types.txt,/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/dump.xml']' returned non-zero exit status -5
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Not sure exactly what crashed, but obviously something ran:
&lt;br&gt;&amp;gt; g_type_init() and then g_thread_init(). Maybe we need to make this a
&lt;br&gt;&amp;gt; non-fatal warning?
&lt;/div&gt;&lt;br&gt;Nah, just a bug in the dumper. &amp;nbsp;Fixed:
&lt;br&gt;&lt;br&gt;commit ffd9b39620c9665a8685363202b4f02fa895288c
&lt;br&gt;Author: Colin Walters &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26613476&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;walters@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: &amp;nbsp; Wed Dec 2 12:56:52 2009 -0500
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; [dumper] Fix threads initialization
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Correctly guard with g_thread_supported, call g_thread_init before
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_type_init.
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26613476&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26613476.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26611346</id>
	<title>Re: Embedding the VTE Virtual Terminal</title>
	<published>2009-12-02T08:01:09Z</published>
	<updated>2009-12-02T08:01:09Z</updated>
	<author>
		<name>Emmanuel Rodriguez</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Thu, Nov 26, 2009 at 3:07 PM, Stevenix &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26611346&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;steve.gnulinux@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;br&gt;
Hi,&lt;br&gt;
&lt;br&gt;
I&amp;#39;m writing a Gui+Terminal application, where VTE is embedded on window, and&lt;br&gt;
the GUI Menu Items.&lt;br&gt;
&lt;br&gt;
And i&amp;#39;m trying to call this action...&lt;br&gt;
&lt;br&gt;
... calls to this action from the menu... (just fork a &amp;#39;ls&amp;#39; command)&lt;br&gt;
&lt;br&gt;
But i&amp;#39;m unable to get the &amp;#39;ls&amp;#39; listing ...&lt;br&gt;
&lt;br&gt;
 void VimWindow (GtkWidget *widget, gpointer gdata)&lt;br&gt;
    {&lt;br&gt;
    GtkWidget *vte;&lt;br&gt;
      vte = vte_terminal_new();&lt;br&gt;
              [b]vte_terminal_fork_command(VTE_TERMINAL(vte), &amp;quot;ls&amp;quot;, NULL,&lt;br&gt;
NULL, &amp;quot;.&amp;quot;, FALSE, FALSE, FALSE);[/b]&lt;br&gt;
            }&lt;br&gt;
&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt; &lt;br&gt;Try something like this (untested):&lt;br&gt;char [][] argv = {&lt;br&gt;  &amp;quot;ls&amp;quot;, NULL&lt;br&gt;}; &lt;br&gt;&lt;/div&gt;&lt;/div&gt;vte_terminal_fork_command(VTE_TERMINAL(vte), &amp;quot;ls&amp;quot;, argv, NULL, &amp;quot;.&amp;quot;, FALSE, FALSE, FALSE);&lt;br&gt;
&lt;br&gt;If I recall well the first &amp;quot;ls&amp;quot; is actually the name you want the users to see when they run ps while argv[0] has the name of the program to execute.&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;Emmanuel Rodriguez&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26611346&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Embedding-the-VTE-Virtual-Terminal-tp26529933p26611346.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26608631</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T05:11:18Z</published>
	<updated>2009-12-02T05:11:18Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Wed, 2009-12-02 at 13:07 +0000, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608631&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jcupitt@...&lt;/a&gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2009/12/2 Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608631&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;gt; On Wed, 2009-12-02 at 11:48 +0000, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608631&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jcupitt@...&lt;/a&gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; 2009/12/2 Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608631&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; I'm certainly for this. Does anyone know of any system in use
&lt;br&gt;&amp;gt; where
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; gthreads are not availible?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; One problem I've had in the past is writing mysql plugins.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I help maintain an image processing library, and one use of the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; library was a mysql plugin that added query-by-image-content. To
&lt;br&gt;&amp;gt; get
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; the plugin working we had to make sure we could run threadless.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; By threadless, do you mean not linking to the thread library, or do
&lt;br&gt;&amp;gt; you
&lt;br&gt;&amp;gt; &amp;gt; mean &amp;quot;don't spawn threads&amp;quot;. Because initializing threads doesn't
&lt;br&gt;&amp;gt; mean
&lt;br&gt;&amp;gt; &amp;gt; we'll create threads, just that we make global us data threadsafe.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Sorry, I wasn't clear. You mustn't even link to pthreads when building
&lt;br&gt;&amp;gt; mysql plugins.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Or that used to be the case anyway. I tried a quick google but
&lt;br&gt;&amp;gt; couldn't find anything saying whether or not this was still a problem,
&lt;br&gt;&amp;gt; so this might all be a red herring anyway.
&lt;/div&gt;&lt;br&gt;I guess this is the same problem that we had recently, where its not
&lt;br&gt;allowed to dynamically link in libpthreads in a binary that doesn't link
&lt;br&gt;to libpthreads.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608631&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608631&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's an underprivileged ninja vampire hunter searching for his wife's true 
&lt;br&gt;killer. She's a transdimensional nymphomaniac mermaid with the power to bend 
&lt;br&gt;men's minds. They fight crime! 
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608631&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26608631.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26608581</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T05:07:11Z</published>
	<updated>2009-12-02T05:07:11Z</updated>
	<author>
		<name>jcupitt</name>
	</author>
	<content type="html">2009/12/2 Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608581&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, 2009-12-02 at 11:48 +0000, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608581&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jcupitt@...&lt;/a&gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; 2009/12/2 Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608581&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; I'm certainly for this. Does anyone know of any system in use where
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; gthreads are not availible?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; One problem I've had in the past is writing mysql plugins.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I help maintain an image processing library, and one use of the
&lt;br&gt;&amp;gt;&amp;gt; library was a mysql plugin that added query-by-image-content. To get
&lt;br&gt;&amp;gt;&amp;gt; the plugin working we had to make sure we could run threadless.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; By threadless, do you mean not linking to the thread library, or do you
&lt;br&gt;&amp;gt; mean &amp;quot;don't spawn threads&amp;quot;. Because initializing threads doesn't mean
&lt;br&gt;&amp;gt; we'll create threads, just that we make global us data threadsafe.
&lt;/div&gt;&lt;br&gt;Sorry, I wasn't clear. You mustn't even link to pthreads when building
&lt;br&gt;mysql plugins.
&lt;br&gt;&lt;br&gt;Or that used to be the case anyway. I tried a quick google but
&lt;br&gt;couldn't find anything saying whether or not this was still a problem,
&lt;br&gt;so this might all be a red herring anyway.
&lt;br&gt;&lt;br&gt;John
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608581&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26608581.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26608463</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T04:58:29Z</published>
	<updated>2009-12-02T04:58:29Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Wed, 2009-12-02 at 11:48 +0000, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608463&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jcupitt@...&lt;/a&gt; wrote:
&lt;br&gt;&amp;gt; 2009/12/2 Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608463&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;gt; I'm certainly for this. Does anyone know of any system in use where
&lt;br&gt;&amp;gt; &amp;gt; gthreads are not availible?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; One problem I've had in the past is writing mysql plugins.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I help maintain an image processing library, and one use of the
&lt;br&gt;&amp;gt; library was a mysql plugin that added query-by-image-content. To get
&lt;br&gt;&amp;gt; the plugin working we had to make sure we could run threadless.
&lt;br&gt;&lt;br&gt;By threadless, do you mean not linking to the thread library, or do you
&lt;br&gt;mean &amp;quot;don't spawn threads&amp;quot;. Because initializing threads doesn't mean
&lt;br&gt;we'll create threads, just that we make global us data threadsafe.
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608463&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608463&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's a time-tossed coffee-fuelled gangster with a robot buddy named Sparky. 
&lt;br&gt;She's a supernatural tomboy former first lady with the power to bend men's 
&lt;br&gt;minds. They fight crime! 
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26608463&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26608463.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26607637</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T03:48:07Z</published>
	<updated>2009-12-02T03:48:07Z</updated>
	<author>
		<name>jcupitt</name>
	</author>
	<content type="html">2009/12/2 Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26607637&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; I'm certainly for this. Does anyone know of any system in use where
&lt;br&gt;&amp;gt; gthreads are not availible?
&lt;br&gt;&lt;br&gt;One problem I've had in the past is writing mysql plugins.
&lt;br&gt;&lt;br&gt;I help maintain an image processing library, and one use of the
&lt;br&gt;library was a mysql plugin that added query-by-image-content. To get
&lt;br&gt;the plugin working we had to make sure we could run threadless.
&lt;br&gt;&lt;br&gt;I've not actually checked for years, perhaps mysql allows plugins to
&lt;br&gt;link to more stuff now.
&lt;br&gt;&lt;br&gt;John
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26607637&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26607637.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26607131</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T03:03:18Z</published>
	<updated>2009-12-02T03:03:18Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Tue, 2009-12-01 at 14:29 +0100, Alexander Larsson wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Thu, 2009-11-26 at 14:35 +0100, Alexander Larsson wrote:
&lt;br&gt;&amp;gt; &amp;gt; This was previously discussed here, but was sort of hidden in a
&lt;br&gt;&amp;gt; &amp;gt; technical discussion so it got no replies. I'm starting over in
&lt;br&gt;&amp;gt; order
&lt;br&gt;&amp;gt; &amp;gt; to
&lt;br&gt;&amp;gt; &amp;gt; reach a wider target for the discussion.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I'll start with the proposal and then explain the reasons for it:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Starting with next glib release: 
&lt;br&gt;&amp;gt; &amp;gt; * libgobject links to libgthread
&lt;br&gt;&amp;gt; &amp;gt; * g_type_init() starts with:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; #ifdef G_THREADS_ENABLED
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;if (g_thread_supported())
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;g_thread_init (NULL);
&lt;br&gt;&amp;gt; &amp;gt; #endif
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; This means that everything above gobject can rely on thread
&lt;br&gt;&amp;gt; primitives
&lt;br&gt;&amp;gt; &amp;gt; being availible, and that global stuff in glib (mainloop, gslice,
&lt;br&gt;&amp;gt; &amp;gt; globals, etc) are threadsafe.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm attaching a patch that implements this. 
&lt;/div&gt;&lt;br&gt;Running with this patch i ran into an issue while building gnome-shell:
&lt;br&gt;&lt;br&gt;&amp;nbsp; GEN &amp;nbsp; &amp;nbsp;Gdm-1.0.gir
&lt;br&gt;&lt;br&gt;GThread-ERROR **: GThread system may only be initialized once.
&lt;br&gt;aborting...
&lt;br&gt;Command '['/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/Gdm-1.0',
&lt;br&gt;'--introspect-dump=/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/types.txt,/gnome/src/gnome-shell/src/tmp-introspectpoWP_f/dump.xml']' returned non-zero exit status -5
&lt;br&gt;&lt;br&gt;Not sure exactly what crashed, but obviously something ran:
&lt;br&gt;g_type_init() and then g_thread_init(). Maybe we need to make this a
&lt;br&gt;non-fatal warning?
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26607131&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26607131&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's a notorious bohemian librarian from a doomed world. She's a beautiful 
&lt;br&gt;renegade lawyer with the soul of a mighty warrior. They fight crime! 
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26607131&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26607131.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26610308</id>
	<title>Re: [gnome-db] GObject Introspection Support and Gnome 3.0</title>
	<published>2009-12-02T00:45:13Z</published>
	<updated>2009-12-02T00:45:13Z</updated>
	<author>
		<name>Vivien Malerba</name>
	</author>
	<content type="html">2009/12/2 Daniel Espinosa &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26610308&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;esodan@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; How is desirable to have support of GObjectInstrospection in a Gnome
&lt;br&gt;&amp;gt; component for the upcomming Gnome 3.0 release?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What if I need to break ABI to get &amp;quot;easy support&amp;quot; of
&lt;br&gt;&amp;gt; GObjectIntrospection for a library?
&lt;br&gt;&lt;br&gt;I would be very surprised if there wasn't any way to add introspection
&lt;br&gt;support without breaking the ABI, and I really don't want to break the
&lt;br&gt;ABI now.
&lt;br&gt;&lt;br&gt;So please try to find a way for the few objects which are a problem
&lt;br&gt;and make special (not automatically generated) rules for them (if I
&lt;br&gt;remember correctly there are ony 2 or 3).
&lt;br&gt;&lt;br&gt;Thanks a lot for the work you put in bringing introspection support to Libgda.
&lt;br&gt;&lt;br&gt;Vivien
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26610308&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GObject-Introspection-Support-and-Gnome-3.0-tp26610305p26610308.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26604955</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-02T00:04:44Z</published>
	<updated>2009-12-02T00:04:44Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Tue, 2009-12-01 at 16:16 -0500, Dan Winship wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 12/01/2009 03:36 PM, Alexander Larsson wrote:
&lt;br&gt;&amp;gt; &amp;gt; I don't think that is quite right. Its only safe to set this define
&lt;br&gt;&amp;gt; if
&lt;br&gt;&amp;gt; &amp;gt; you can guarantee there is no calls to your code before g_type_init
&lt;br&gt;&amp;gt; (or
&lt;br&gt;&amp;gt; &amp;gt; g_thread_init directly) is called.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Hrmph. Could potentially add a define which would cause a G_LIKELY()
&lt;br&gt;&amp;gt; to be added in to G_THREAD_CF() when linking to gobject... but we'd want
&lt;br&gt;&amp;gt; to test that it actually had a measurable effect first.
&lt;/div&gt;&lt;br&gt;Actually, why are the thread primitives using g_thread_supported() at
&lt;br&gt;all? They're all virtualized anyway, can't we just change the default
&lt;br&gt;operation to be some non-NULL version that does what the 
&lt;br&gt;!g_thread_supported case does?
&lt;br&gt;&amp;nbsp;
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; I wouldn't mind this, but on the other hand its not really a large
&lt;br&gt;&amp;gt; &amp;gt; maintainance burden, is it?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Continuing to maintain the existing code which we already know works
&lt;br&gt;&amp;gt; is not a large burden, but having to write non-threaded versions of *new*
&lt;br&gt;&amp;gt; APIs might suck (having to write *two* non-threaded versions of
&lt;br&gt;&amp;gt; GResolver did) and then after we write them they're never going to get
&lt;br&gt;&amp;gt; used and so they'll probably be all buggy anyway. And besides, who are
&lt;br&gt;&amp;gt; we providing the no-thread-support version for anyway? There used to
&lt;br&gt;&amp;gt; be some somewhat-relevant unixes without pthreads, but I don't think
&lt;br&gt;&amp;gt; there are any non-toy OSes that have that problem any more.
&lt;/div&gt;&lt;br&gt;I'm certainly for this. Does anyone know of any system in use where
&lt;br&gt;gthreads are not availible?
&lt;br&gt;&lt;br&gt;Another aspect is that you might want to disable threads in e.g. an
&lt;br&gt;embedded system where they are not used. I'm not sure people actually do
&lt;br&gt;this though, since embedded systems large enough to run e.g. gtk or
&lt;br&gt;other gobject things are generally big enough that you can support
&lt;br&gt;threads and you're likely to actually want to use things like
&lt;br&gt;threadpools and async i/o.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26604955&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26604955&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's a lonely white trash assassin who dotes on his loving old ma. She's a 
&lt;br&gt;vivacious foul-mouthed magician's assistant from the wrong side of the tracks. 
&lt;br&gt;They fight crime! 
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26604955&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26604955.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26610305</id>
	<title>GObject Introspection Support and Gnome 3.0</title>
	<published>2009-12-01T19:43:11Z</published>
	<updated>2009-12-01T19:43:11Z</updated>
	<author>
		<name>Daniel Espinosa</name>
	</author>
	<content type="html">How is desirable to have support of GObjectInstrospection in a Gnome
&lt;br&gt;component for the upcomming Gnome 3.0 release?
&lt;br&gt;&lt;br&gt;What if I need to break ABI to get &amp;quot;easy support&amp;quot; of
&lt;br&gt;GObjectIntrospection for a library?
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Trabajar, la mejor arma para tu superación
&lt;br&gt;&amp;quot;de grano en grano, se hace la arena&amp;quot; (R) (en trámite, pero para los
&lt;br&gt;cuates: LIBRE)
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26610305&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GObject-Introspection-Support-and-Gnome-3.0-tp26610305p26610305.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26599195</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-01T13:16:32Z</published>
	<updated>2009-12-01T13:16:32Z</updated>
	<author>
		<name>Dan Winship-2</name>
	</author>
	<content type="html">On 12/01/2009 03:36 PM, Alexander Larsson wrote:
&lt;br&gt;&amp;gt; I don't think that is quite right. Its only safe to set this define if
&lt;br&gt;&amp;gt; you can guarantee there is no calls to your code before g_type_init (or
&lt;br&gt;&amp;gt; g_thread_init directly) is called.
&lt;br&gt;&lt;br&gt;Hrmph. Could potentially add a define which would cause a G_LIKELY() to
&lt;br&gt;be added in to G_THREAD_CF() when linking to gobject... but we'd want to
&lt;br&gt;test that it actually had a measurable effect first.
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; threads? Allowing threadless glib means we still need to have the
&lt;br&gt;&amp;gt;&amp;gt; non-threaded versions of GIOScheduler, GResolver, etc, lying around,
&lt;br&gt;&amp;gt;&amp;gt; but
&lt;br&gt;&amp;gt;&amp;gt; they'll never get used in normal builds.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I wouldn't mind this, but on the other hand its not really a large
&lt;br&gt;&amp;gt; maintainance burden, is it?
&lt;br&gt;&lt;br&gt;Continuing to maintain the existing code which we already know works is
&lt;br&gt;not a large burden, but having to write non-threaded versions of *new*
&lt;br&gt;APIs might suck (having to write *two* non-threaded versions of
&lt;br&gt;GResolver did) and then after we write them they're never going to get
&lt;br&gt;used and so they'll probably be all buggy anyway. And besides, who are
&lt;br&gt;we providing the no-thread-support version for anyway? There used to be
&lt;br&gt;some somewhat-relevant unixes without pthreads, but I don't think there
&lt;br&gt;are any non-toy OSes that have that problem any more.
&lt;br&gt;&lt;br&gt;-- Dan
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26599195&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26599195.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26598646</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-01T12:36:48Z</published>
	<updated>2009-12-01T12:36:48Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Tue, 2009-12-01 at 09:26 -0500, Dan Winship wrote:
&lt;br&gt;&amp;gt; On 12/01/2009 08:29 AM, Alexander Larsson wrote:
&lt;br&gt;&amp;gt; &amp;gt; In addition to enabling threads (if complied in) in g_type_init() it
&lt;br&gt;&amp;gt; &amp;gt; adds a G_THREADS_MANDATORY define that if set causes all the
&lt;br&gt;&amp;gt; &amp;gt; g_thread_supported() calls to be removed in the g_thread_* macros.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Should probably add that to Cflags in gobject-2.0.pc.in too?
&lt;br&gt;&lt;br&gt;I don't think that is quite right. Its only safe to set this define if
&lt;br&gt;you can guarantee there is no calls to your code before g_type_init (or
&lt;br&gt;g_thread_init directly) is called. This is true for gobject (must call
&lt;br&gt;g_type_init first) and gio (100% gtype library). However, one could
&lt;br&gt;imagine some library of e.g. utility functions that have stuff you can
&lt;br&gt;use before g_type_init() is called.
&lt;br&gt;&lt;br&gt;&amp;gt; Also, do we want to get rid of the possibility of compiling glib
&lt;br&gt;&amp;gt; without
&lt;br&gt;&amp;gt; threads? Allowing threadless glib means we still need to have the
&lt;br&gt;&amp;gt; non-threaded versions of GIOScheduler, GResolver, etc, lying around,
&lt;br&gt;&amp;gt; but
&lt;br&gt;&amp;gt; they'll never get used in normal builds.
&lt;br&gt;&lt;br&gt;I wouldn't mind this, but on the other hand its not really a large
&lt;br&gt;maintainance burden, is it?
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26598646&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26598646&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's an obese devious vagrant fleeing from a secret government programme. 
&lt;br&gt;She's a chain-smoking mutant opera singer with her own daytime radio talk 
&lt;br&gt;show. They fight crime! 
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26598646&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26598646.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26596301</id>
	<title>(no subject)</title>
	<published>2009-12-01T10:01:15Z</published>
	<updated>2009-12-01T10:01:15Z</updated>
	<author>
		<name>sbaka</name>
	</author>
	<content type="html">&lt;html&gt;
&lt;head&gt;

&lt;/head&gt;
&lt;body class='hmmessage'&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Good morning all,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I have not been able to find anything in doc's that explains this:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;br&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;color: #b930a1&quot;&gt;if&lt;/span&gt;(self-&amp;gt;priv-&amp;gt;xml_filename != &lt;span style=&quot;color: #b930a1&quot;&gt;NULL&lt;/span&gt; &amp;amp;&amp;amp; self-&amp;gt;priv-&amp;gt;xml_main != &lt;span style=&quot;color: #b930a1&quot;&gt;NULL&lt;/span&gt;){&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;br&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008311&quot;&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/span&gt;/* Load the xml object from the xml interface file Using the giving base name of window_name*/&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008311&quot;&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/span&gt;/* UPDATE 11272009 1102 NO BUG - migration to Gtkbuilder from libglade */&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008311&quot;&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/span&gt;//xml = glade_xml_new(self-&amp;gt;priv-&amp;gt;xml_filename, window_name, NULL);&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;self-&amp;gt;priv-&amp;gt;xml = gtk_builder_new ();&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;color: #b930a1&quot;&gt;if&lt;/span&gt; (self-&amp;gt;priv-&amp;gt;xml != &lt;span style=&quot;color: #b930a1&quot;&gt;NULL&lt;/span&gt;){&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;gtk_builder_add_from_file&amp;nbsp;(self-&amp;gt;priv-&amp;gt;xml, self-&amp;gt;priv-&amp;gt;xml_filename, &lt;span style=&quot;color: #b930a1&quot;&gt;NULL&lt;/span&gt;);&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008311&quot;&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/span&gt;/* Set the main window to be parent to all */&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008311&quot;&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &lt;/span&gt;//widget = glade_xml_get_widget (&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); &quot;&gt;self-&amp;gt;priv-&amp;gt;xml&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); &quot;&gt;self-&amp;gt;priv-&amp;gt;xml_main&lt;/span&gt;);&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;self-&amp;gt;main_window = gtk_builder_get_object (self-&amp;gt;priv-&amp;gt;xml, self-&amp;gt;priv-&amp;gt;xml_main);&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;br&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;span style=&quot;color: #b930a1&quot;&gt;if&lt;/span&gt;(self-&amp;gt;main_window)&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;gtk_widget_show (self-&amp;gt;main_window);&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;
&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Verdana&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10pt; &quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Verdana&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10pt; &quot;&gt;Previously, I was able to open a Glade XML file with multiple top level windows, and only load the specific window I wanted from within that file. I have tried to re-write this routine, however, every time a call is made to&amp;nbsp;gtk_builder_add_from_file it not only loads the file but it also loads and displays ALL the windows in that file.&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Verdana&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10pt; &quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Verdana&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10pt; &quot;&gt;Should this not work like glade did before, where you would load the file, then call the objects you wanted to be displayed?&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Verdana&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10pt; &quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Verdana&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10pt; &quot;&gt;Either I have written this wrong, or there has been an implementation change, which I don't think is for the better. You should be able to load the objects (WITHOUT DISPLAYING) and then only show the ones you want. What am I missing here?&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10pt; &quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;I used the converter, and I have fixed all the mess-ups using glade-3. But I can not find anywhere or any how to load the file without it displaying all top level windows.&lt;br&gt;&lt;/span&gt;&lt;br&gt;Thanks in advance for your help&lt;div&gt;Shawn&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table style=&quot;border-top:1px solid black;font-weight:bold;font-family:'Segoe UI',Tahoma,san-serif&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://im.live.com/Messenger/IM/Home/?source=EML_WLHM_GreaterGood&quot; style=&quot;font-size:9pt;color:#0184CB;text-decoration:none&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;&lt;img style=&quot;border-style:none&quot; src=&quot;http://gfx1.hotmail.com/mail/w4/pr01/ltr/i_charity.gif&quot; alt=&quot;i'm&quot;&gt; EMAILING FOR THE GREATER GOOD&lt;br&gt;&lt;span style=&quot;padding:0px 24px;font-size:8pt;color:#3FB555;text-decoration:underline&quot;&gt;Join me&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; 		 	   		  &lt;/body&gt;
&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26596301&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%28no-subject%29-tp26596301p26596301.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26593570</id>
	<title>GLib 2.22.3 released</title>
	<published>2009-12-01T07:19:19Z</published>
	<updated>2009-12-01T07:19:19Z</updated>
	<author>
		<name>Matthias Clasen</name>
	</author>
	<content type="html">GLib 2.22.3 is now available for download at:
&lt;br&gt;&lt;br&gt;&amp;nbsp; ftp://ftp.gtk.org/pub/glib/2.22/
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://download.gnome.org/sources/glib/2.22/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://download.gnome.org/sources/glib/2.22/&lt;/a&gt;&lt;br&gt;&lt;br&gt;md5 sums:
&lt;br&gt;25b043b208883194c57219e41a230a29 &amp;nbsp;glib-2.22.3.tar.bz2
&lt;br&gt;e699a93d62c01e0ee07caef3e11eddd8 &amp;nbsp;glib-2.22.3.tar.gz
&lt;br&gt;&lt;br&gt;sha1 sums:
&lt;br&gt;185d5b80adef96019daf7402cc6762cc4d37470d &amp;nbsp;glib-2.22.3.tar.bz2
&lt;br&gt;3c4c1e197b955993261cf4c0e83da2a2e507d8ec &amp;nbsp;glib-2.22.3.tar.gz
&lt;br&gt;&lt;br&gt;This is another bug fix release in the stable 2.22 series.
&lt;br&gt;&lt;br&gt;GLib is the low-level core library that forms the basis for projects
&lt;br&gt;such as GTK+ and GNOME. It provides data structure handling for C,
&lt;br&gt;portability wrappers, and interfaces for such runtime functionality as
&lt;br&gt;an event loop, threads, dynamic loading, and an object system.
&lt;br&gt;&lt;br&gt;More information about GLib is available at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://www.gtk.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;An installation guide for the GTK+ libraries, including GLib, can
&lt;br&gt;be found at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Overview of Changes from GLib 2.22.2 to GLib 2.22.3
&lt;br&gt;===================================================
&lt;br&gt;&lt;br&gt;* Bugs fixed:
&lt;br&gt;&amp;nbsp;350200 GTypeModule derived class unref does not unload plugin
&lt;br&gt;&amp;nbsp;598899 GWin32DirectoryMonitor is broken
&lt;br&gt;&amp;nbsp;563627 g_get_prgname() threadsafety
&lt;br&gt;&amp;nbsp;572252 Bug in g_file_test() function.
&lt;br&gt;&amp;nbsp;577711 cross compile check for g++ broken
&lt;br&gt;&amp;nbsp;598712 can't detect text file with backspace
&lt;br&gt;&amp;nbsp;541236 not detecting exact content type
&lt;br&gt;&amp;nbsp;593856 file and directory monitors don't work with --disable-debug
&lt;br&gt;&amp;nbsp;593809 Nautilus does not restore the position of the icons...
&lt;br&gt;&lt;br&gt;* Updated translations:
&lt;br&gt;&amp;nbsp;Catalan Valencian
&lt;br&gt;&amp;nbsp;Estonian
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks to all contributors:
&lt;br&gt;Tor Lillqvist
&lt;br&gt;Tomas Bzatek
&lt;br&gt;Alexander Larsson
&lt;br&gt;Cody Russell
&lt;br&gt;Chris Wilson
&lt;br&gt;Tim Janik
&lt;br&gt;Sven Herzberg
&lt;br&gt;Benjamin Otte
&lt;br&gt;Carlo Bramini
&lt;br&gt;Hib Eris
&lt;br&gt;Mures Andone
&lt;br&gt;Ryan Lortie
&lt;br&gt;&lt;br&gt;&lt;br&gt;December 1, 2009
&lt;br&gt;Matthias Clasen
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26593570&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GLib-2.22.3-released-tp26593570p26593570.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26592654</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-01T06:26:37Z</published>
	<updated>2009-12-01T06:26:37Z</updated>
	<author>
		<name>Dan Winship-2</name>
	</author>
	<content type="html">On 12/01/2009 08:29 AM, Alexander Larsson wrote:
&lt;br&gt;&amp;gt; In addition to enabling threads (if complied in) in g_type_init() it
&lt;br&gt;&amp;gt; adds a G_THREADS_MANDATORY define that if set causes all the
&lt;br&gt;&amp;gt; g_thread_supported() calls to be removed in the g_thread_* macros.
&lt;br&gt;&lt;br&gt;Should probably add that to Cflags in gobject-2.0.pc.in too?
&lt;br&gt;&lt;br&gt;Also, do we want to get rid of the possibility of compiling glib without
&lt;br&gt;threads? Allowing threadless glib means we still need to have the
&lt;br&gt;non-threaded versions of GIOScheduler, GResolver, etc, lying around, but
&lt;br&gt;they'll never get used in normal builds.
&lt;br&gt;&lt;br&gt;-- Dan
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26592654&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26592654.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26592511</id>
	<title>GTK+ 2.18.4 released</title>
	<published>2009-12-01T06:15:32Z</published>
	<updated>2009-12-01T06:15:32Z</updated>
	<author>
		<name>Matthias Clasen</name>
	</author>
	<content type="html">GTK+ 2.18.4 is now available for download at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;ftp://ftp.gtk.org/pub/gtk/2.18/
&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://download.gnome.org/sources/gtk+/2.18/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://download.gnome.org/sources/gtk+/2.18/&lt;/a&gt;&lt;br&gt;&lt;br&gt;md5 sums:
&lt;br&gt;311ec49d7cae0c0b431ab6235579f5a4 &amp;nbsp;gtk+-2.18.4.tar.bz2
&lt;br&gt;6e532fcc073dc64e9664b0bc93aedf14 &amp;nbsp;gtk+-2.18.4.tar.gz
&lt;br&gt;&lt;br&gt;sha1 sums:
&lt;br&gt;7a7d6c38c30d2b1234d512ee5184ef4c3956e782 &amp;nbsp;gtk+-2.18.4.tar.bz2
&lt;br&gt;eedc22a7d2e2d4e2d67af77d9c82b89d757b19ed &amp;nbsp;gtk+-2.18.4.tar.gz
&lt;br&gt;&lt;br&gt;This is a bug fix release in the stable 2.18 series.
&lt;br&gt;&lt;br&gt;============
&lt;br&gt;&lt;br&gt;GTK+ is a multi-platform toolkit for creating graphical user
&lt;br&gt;interfaces. Offering a complete set of widgets, GTK+ is suitable for
&lt;br&gt;projects ranging from small one-off tools to complete application
&lt;br&gt;suites.
&lt;br&gt;&lt;br&gt;GTK+ has been designed from the ground up to support a range of
&lt;br&gt;languages, not only C/C++. Using GTK+ from languages such as Perl and
&lt;br&gt;Python (especially in combination with the Glade GUI builder) provides
&lt;br&gt;an effective method of rapid application development.
&lt;br&gt;&lt;br&gt;GTK+ is free software and part of the GNU Project. However, the
&lt;br&gt;licensing terms for GTK+, the GNU LGPL, allow it to be used by all
&lt;br&gt;developers, including those developing proprietary software, without
&lt;br&gt;any license fees or royalties.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Where to get more information about GTK+
&lt;br&gt;========================================
&lt;br&gt;&lt;br&gt;Information about GTK+ including links to documentation can be
&lt;br&gt;found at:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.gtk.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;An installation guide for GTK+ 2.x is found at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Common questions:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-question-index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-question-index.html&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.gtk.org/faq/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/faq/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Contributing
&lt;br&gt;============
&lt;br&gt;&lt;br&gt;GTK+ is a large project and relies on voluntary contributions.
&lt;br&gt;We are actively searching for new contributors in various areas
&lt;br&gt;and invite everyone to help project development.
&lt;br&gt;If you are willing to participate, please subscribe to the project
&lt;br&gt;mailing lists to offer your help and read over our list of vacant
&lt;br&gt;project tasks:
&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://live.gnome.org/GtkTasks&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/GtkTasks&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Overview of Changes from GTK+ 2.18.3 to 2.18.4
&lt;br&gt;==============================================
&lt;br&gt;&lt;br&gt;* Client-side windows:
&lt;br&gt;&amp;nbsp;- Avoid some unnecessary exposes
&lt;br&gt;&amp;nbsp;- Avoid unnecessary redraws related to clearing windows
&lt;br&gt;&lt;br&gt;* Bugs fixed:
&lt;br&gt;&amp;nbsp;563010 Fix clearing the selection in GtkFileChooserButton
&lt;br&gt;&amp;nbsp;581150 GtkIconView tries to paint items with invalid sizes
&lt;br&gt;&amp;nbsp;601869 GtkUIManager assumes too much about popup menus
&lt;br&gt;&amp;nbsp;581145 Wrong positioning for fullscreen gedit toolbar animation
&lt;br&gt;&amp;nbsp;599118 Translators comment for &amp;quot;Finishing&amp;quot; labels
&lt;br&gt;&amp;nbsp;599321 gtk_selection_data_get_uris is broken on Windows
&lt;br&gt;&amp;nbsp;381371 Print margins not correct in WIN32 - not allowing...
&lt;br&gt;&amp;nbsp;599446 atk_object_set_name () assertion in gtk_tool_button_set_label
&lt;br&gt;&amp;nbsp;602725 fix setting icon-size on GICON images
&lt;br&gt;&amp;nbsp;588740 JPEG images open with blur effect?
&lt;br&gt;&amp;nbsp;602724 gailimage doesn't handle GTK_IMAGE_{GICON,ICON_NAME}...
&lt;br&gt;&amp;nbsp;561130 get_monitor_geometry segfaults if called with non-existant...
&lt;br&gt;&amp;nbsp;585383 Segfault in gdk_pixbuf__ico_image_save
&lt;br&gt;&amp;nbsp;123569 Catch contents being reparented out of socket
&lt;br&gt;&amp;nbsp;601611 gtk_selection_data_get_targets() reads X Atom data as GdkAtoms
&lt;br&gt;&amp;nbsp;601959 must release compose key before continuing compose sequence
&lt;br&gt;&amp;nbsp;603201 gtk_about_dialog_set_url_hook has no effect anymore
&lt;br&gt;&amp;nbsp;591438 dfb_events_dispatch is not thread safe
&lt;br&gt;&amp;nbsp;603128 Adding new UI that was recently removed may cause wrong order
&lt;br&gt;&lt;br&gt;&lt;br&gt;* Updated translations:
&lt;br&gt;&amp;nbsp;Low German
&lt;br&gt;&amp;nbsp;Romanian
&lt;br&gt;&amp;nbsp;Russian
&lt;br&gt;&amp;nbsp;Slovenian
&lt;br&gt;&lt;br&gt;Thanks to all contributors:
&lt;br&gt;Tor Lillqvist
&lt;br&gt;Milan Crha
&lt;br&gt;Federico Mena Quintero
&lt;br&gt;Luca Ferretti
&lt;br&gt;Matt Barnes
&lt;br&gt;Peter Hutterer
&lt;br&gt;Ray Strode
&lt;br&gt;Adrian Johnson
&lt;br&gt;Alexander Larsson
&lt;br&gt;Christian Dywan
&lt;br&gt;Hans Breuer
&lt;br&gt;Michael Emmel
&lt;br&gt;Christian Persch
&lt;br&gt;Owen Taylor
&lt;br&gt;Felix Riemann
&lt;br&gt;David Jander
&lt;br&gt;Javier Jardón
&lt;br&gt;&lt;br&gt;&lt;br&gt;December 1, 2009
&lt;br&gt;Matthias Clasen
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26592511&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-2.18.4-released-tp26592511p26592511.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26591778</id>
	<title>Re: Proposal: Enable threads by default</title>
	<published>2009-12-01T05:29:33Z</published>
	<updated>2009-12-01T05:29:33Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Thu, 2009-11-26 at 14:35 +0100, Alexander Larsson wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; This was previously discussed here, but was sort of hidden in a
&lt;br&gt;&amp;gt; technical discussion so it got no replies. I'm starting over in order
&lt;br&gt;&amp;gt; to
&lt;br&gt;&amp;gt; reach a wider target for the discussion.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'll start with the proposal and then explain the reasons for it:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Starting with next glib release: 
&lt;br&gt;&amp;gt; * libgobject links to libgthread
&lt;br&gt;&amp;gt; * g_type_init() starts with:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #ifdef G_THREADS_ENABLED
&lt;br&gt;&amp;gt; &amp;nbsp;if (g_thread_supported())
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;g_thread_init (NULL);
&lt;br&gt;&amp;gt; #endif
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This means that everything above gobject can rely on thread primitives
&lt;br&gt;&amp;gt; being availible, and that global stuff in glib (mainloop, gslice,
&lt;br&gt;&amp;gt; globals, etc) are threadsafe.
&lt;/div&gt;&lt;/div&gt;I'm attaching a patch that implements this. 
&lt;br&gt;&lt;br&gt;In addition to enabling threads (if complied in) in g_type_init() it
&lt;br&gt;adds a G_THREADS_MANDATORY define that if set causes all the
&lt;br&gt;g_thread_supported() calls to be removed in the g_thread_* macros. 
&lt;br&gt;&lt;br&gt;We then pass -DG_THREADS_MANDATORY in gobject and gio if threads are
&lt;br&gt;enabled, letting us avoid a bunch of checks of the
&lt;br&gt;g_threads_got_initialized global variable. I'm not sure how important
&lt;br&gt;this is, but it got rid of 2186 bytes of code in libgobject.so, and it
&lt;br&gt;just seems wrong to constantly check this when its always true.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26591778&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26591778&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's an immortal pirate gangster from the 'hood. She's an orphaned 
&lt;br&gt;nymphomaniac detective on the trail of a serial killer. They fight crime! 
&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[gobject-enable-threads.patch]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;diff --git a/configure.in b/configure.in
&lt;br&gt;index 723311f..9b4510b 100644
&lt;br&gt;--- a/configure.in
&lt;br&gt;+++ b/configure.in
&lt;br&gt;@@ -2349,6 +2349,7 @@ case $host in
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;;;
&lt;br&gt;&amp;nbsp;esac
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+AM_CONDITIONAL(HAVE_THREADS, [test &amp;quot;$have_threads&amp;quot; != &amp;quot;none&amp;quot;])
&lt;br&gt;&amp;nbsp;AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,&amp;quot;gthread-$have_threads.c&amp;quot;,
&lt;br&gt;&amp;nbsp;		 &amp;nbsp; [Source file containing theread implementation])
&lt;br&gt;&amp;nbsp;AC_SUBST(G_THREAD_CFLAGS)
&lt;br&gt;diff --git a/gio/Makefile.am b/gio/Makefile.am
&lt;br&gt;index 9dc2e02..62350cb 100644
&lt;br&gt;--- a/gio/Makefile.am
&lt;br&gt;+++ b/gio/Makefile.am
&lt;br&gt;@@ -41,6 +41,10 @@ TESTS = abicheck.sh pltcheck.sh
&lt;br&gt;&amp;nbsp;endif
&lt;br&gt;&amp;nbsp;endif
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+if HAVE_THREADS
&lt;br&gt;+THREAD_FLAGS=-DG_THREADS_MANDATORY
&lt;br&gt;+endif
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;AM_CPPFLAGS = \
&lt;br&gt;&amp;nbsp;	-DG_LOG_DOMAIN=\&amp;quot;GLib-GIO\&amp;quot;			\
&lt;br&gt;&amp;nbsp;	-I$(top_builddir)				\
&lt;br&gt;@@ -48,6 +52,7 @@ AM_CPPFLAGS = \
&lt;br&gt;&amp;nbsp;	-I$(top_srcdir)/glib				\
&lt;br&gt;&amp;nbsp;	-I$(top_srcdir)/gmodule				\
&lt;br&gt;&amp;nbsp;	$(GLIB_DEBUG_FLAGS)				\
&lt;br&gt;+	$(THREAD_FLAGS)					\
&lt;br&gt;&amp;nbsp;	-DG_DISABLE_DEPRECATED				\
&lt;br&gt;&amp;nbsp;	-DGIO_COMPILATION				\
&lt;br&gt;&amp;nbsp;	-DGIO_MODULE_DIR=\&amp;quot;$(GIO_MODULE_DIR)\&amp;quot;	
&lt;br&gt;diff --git a/glib/gthread.h b/glib/gthread.h
&lt;br&gt;index 019d0db..7a0abba 100644
&lt;br&gt;--- a/glib/gthread.h
&lt;br&gt;+++ b/glib/gthread.h
&lt;br&gt;@@ -198,7 +198,11 @@ GMutex* g_static_mutex_get_mutex_impl &amp;nbsp; (GMutex **mutex);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(cond, mutex, abs_time, G_MUTEX_DEBUG_MAGIC, G_STRLOC) : TRUE)
&lt;br&gt;&amp;nbsp;#endif /* G_ERRORCHECK_MUTEXES */
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+#if defined(G_THREADS_ENABLED) &amp;&amp; defined(G_THREADS_MANDATORY)
&lt;br&gt;+#define g_thread_supported() &amp;nbsp; &amp;nbsp; 1
&lt;br&gt;+#else
&lt;br&gt;&amp;nbsp;#define g_thread_supported() &amp;nbsp; &amp;nbsp;(g_threads_got_initialized)
&lt;br&gt;+#endif
&lt;br&gt;&amp;nbsp;#define g_mutex_new() &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_THREAD_UF (mutex_new, &amp;nbsp; &amp;nbsp; &amp;nbsp;())
&lt;br&gt;&amp;nbsp;#define g_cond_new() &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; G_THREAD_UF (cond_new, &amp;nbsp; &amp;nbsp; &amp;nbsp; ())
&lt;br&gt;&amp;nbsp;#define g_cond_signal(cond) &amp;nbsp; &amp;nbsp; &amp;nbsp;G_THREAD_CF (cond_signal, &amp;nbsp; &amp;nbsp;(void)0, (cond))
&lt;br&gt;diff --git a/gobject-2.0-uninstalled.pc.in b/gobject-2.0-uninstalled.pc.in
&lt;br&gt;index 1aab1b5..d9378a5 100644
&lt;br&gt;--- a/gobject-2.0-uninstalled.pc.in
&lt;br&gt;+++ b/gobject-2.0-uninstalled.pc.in
&lt;br&gt;@@ -1,6 +1,6 @@
&lt;br&gt;&amp;nbsp;Name: GObject Uninstalled
&lt;br&gt;&amp;nbsp;Description: Object/type system for GLib, Not Installed
&lt;br&gt;-Requires: glib-2.0-uninstalled
&lt;br&gt;+Requires: glib-2.0-uninstalled,gthread-2.0-uninstalled
&lt;br&gt;&amp;nbsp;Version: @VERSION@
&lt;br&gt;&amp;nbsp;Libs: ${pc_top_builddir}/${pcfiledir}/gobject/libgobject-2.0.la
&lt;br&gt;&amp;nbsp;## cflags contains builddir in addition to srcdir because of gmarshal.h
&lt;br&gt;diff --git a/gobject-2.0.pc.in b/gobject-2.0.pc.in
&lt;br&gt;index 31fe34d..41505a9 100644
&lt;br&gt;--- a/gobject-2.0.pc.in
&lt;br&gt;+++ b/gobject-2.0.pc.in
&lt;br&gt;@@ -5,7 +5,7 @@ includedir=@includedir@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;Name: GObject
&lt;br&gt;&amp;nbsp;Description: GLib Type, Object, Parameter and Signal Library
&lt;br&gt;-Requires: glib-2.0
&lt;br&gt;+Requires: glib-2.0,gthread-2.0
&lt;br&gt;&amp;nbsp;Version: @VERSION@
&lt;br&gt;&amp;nbsp;Libs: -L${libdir} -lgobject-2.0
&lt;br&gt;&amp;nbsp;Cflags:
&lt;br&gt;diff --git a/gobject/Makefile.am b/gobject/Makefile.am
&lt;br&gt;index b5902d3..7579dc9 100644
&lt;br&gt;--- a/gobject/Makefile.am
&lt;br&gt;+++ b/gobject/Makefile.am
&lt;br&gt;@@ -6,12 +6,17 @@ include $(top_srcdir)/Makefile.decl
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;SUBDIRS = . tests
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+if HAVE_THREADS
&lt;br&gt;+THREAD_FLAGS=-DG_THREADS_MANDATORY
&lt;br&gt;+endif
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;AM_CPPFLAGS = 					\
&lt;br&gt;&amp;nbsp;	-DG_LOG_DOMAIN=\&amp;quot;GLib-GObject\&amp;quot;		\
&lt;br&gt;&amp;nbsp;	-I$(top_srcdir)				\
&lt;br&gt;&amp;nbsp;	-I$(top_srcdir)/glib			\
&lt;br&gt;&amp;nbsp;	-I$(top_builddir)			\
&lt;br&gt;&amp;nbsp;	$(GLIB_DEBUG_FLAGS)			\
&lt;br&gt;+	$(THREAD_FLAGS)				\
&lt;br&gt;&amp;nbsp;	-DG_DISABLE_DEPRECATED			\
&lt;br&gt;&amp;nbsp;	-DGOBJECT_COMPILATION			\
&lt;br&gt;&amp;nbsp;	-DG_DISABLE_CONST_RETURNS
&lt;br&gt;@@ -31,7 +36,7 @@ TESTS = abicheck.sh pltcheck.sh
&lt;br&gt;&amp;nbsp;endif
&lt;br&gt;&amp;nbsp;endif
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-libglib = $(top_builddir)/glib/libglib-2.0.la
&lt;br&gt;+libglib = $(top_builddir)/glib/libglib-2.0.la $(top_builddir)/gthread/libgthread-2.0.la
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;# libraries to compile and install
&lt;br&gt;&amp;nbsp;lib_LTLIBRARIES = libgobject-2.0.la
&lt;br&gt;diff --git a/gobject/gtype.c b/gobject/gtype.c
&lt;br&gt;index cc3b9df..0d816b7 100644
&lt;br&gt;--- a/gobject/gtype.c
&lt;br&gt;+++ b/gobject/gtype.c
&lt;br&gt;@@ -4180,7 +4180,12 @@ g_type_init_with_debug_flags (GTypeDebugFlags debug_flags)
&lt;br&gt;&amp;nbsp; &amp;nbsp;GTypeInfo info;
&lt;br&gt;&amp;nbsp; &amp;nbsp;TypeNode *node;
&lt;br&gt;&amp;nbsp; &amp;nbsp;volatile GType votype;
&lt;br&gt;- &amp;nbsp;
&lt;br&gt;+
&lt;br&gt;+#ifdef G_THREADS_ENABLED
&lt;br&gt;+ &amp;nbsp;if (!g_thread_get_initialized())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;g_thread_init (NULL);
&lt;br&gt;+#endif
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp;G_LOCK (type_init_lock);
&lt;br&gt;&amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp;G_WRITE_LOCK (&amp;type_rw_lock);
&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26591778&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Proposal%3A-Enable-threads-by-default-tp26529526p26591778.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26610301</id>
	<title>Gtk Critical Error While Using Cairo and Pango.</title>
	<published>2009-12-01T03:03:17Z</published>
	<updated>2009-12-01T03:03:17Z</updated>
	<author>
		<name>Ajay Balar</name>
	</author>
	<content type="html">Hello everyone,&lt;br&gt;&lt;br&gt;I am having following example code which i am using to Draw background of a window plus a GtkImage On It. I am drawing background of GtkWindow by use of Cairo on Expose Event. I am Adding One GtkImage on this window and in that GtkImage i ma adding Text Using Pango but this image is not visible.&lt;br&gt;

&lt;br&gt;&lt;br&gt;You can try and run this program.&lt;br&gt;It will just display window with given PNG image as background. but not the image on it. when i use export XLIB_SKIP_ARGB_VISUALS=1 on terminal then it displays both Window and Image on it but Transparency of background image is Lost.&lt;br&gt;

&lt;br&gt;&lt;br&gt;Code&lt;br&gt;&lt;br&gt;--------------------------------------------------------------------------------------------------------------------------------&lt;br&gt;&lt;br&gt;#include &amp;lt;gtk/gtk.h&amp;gt;&lt;br&gt;#include &amp;quot;string.h&amp;quot;&lt;br&gt;&lt;br&gt;

gboolean DrawTextOnImage(GtkWidget *image, const gchar *markup, const gchar* fg_color)&lt;br&gt;{&lt;br&gt;    g_return_val_if_fail( image != NULL, FALSE );&lt;br&gt;    g_return_val_if_fail( markup != NULL, FALSE );&lt;br&gt;&lt;br&gt;    gint x, y, pwidth, pheight;&lt;br&gt;

    GdkGC *gc;&lt;br&gt;    GdkPixmap *pixmap;&lt;br&gt;    GdkPixbuf *pixbuf;&lt;br&gt;    GdkColor  color;&lt;br&gt;    GdkBitmap *mask;&lt;br&gt;    PangoRectangle  extents;&lt;br&gt;    GtkRequisition req;&lt;br&gt;&lt;br&gt;    pixbuf = gtk_image_get_pixbuf( GTK_IMAGE(image) );&lt;br&gt;

    gdk_pixbuf_render_pixmap_and_mask( pixbuf, &amp;amp;pixmap, &amp;amp;mask, 1 );&lt;br&gt;&lt;br&gt;    if (fg_color == NULL)&lt;br&gt;        gdk_color_parse(&amp;quot;black&amp;quot;, &amp;amp;color);&lt;br&gt;    else&lt;br&gt;        gdk_color_parse(fg_color, &amp;amp;color);&lt;br&gt;

&lt;br&gt;    gc = gdk_gc_new( GDK_DRAWABLE( pixmap ) );&lt;br&gt;    gdk_gc_set_rgb_fg_color(gc, &amp;amp;color);&lt;br&gt;&lt;br&gt;    PangoLayout *layout;&lt;br&gt;    layout = pango_layout_new( gtk_widget_get_pango_context(image));&lt;br&gt;    pango_layout_set_markup( layout, markup, strlen(markup) );&lt;br&gt;

    pango_layout_get_pixel_extents (layout, &amp;amp;extents, NULL);&lt;br&gt;&lt;br&gt;    gtk_widget_size_request( image, &amp;amp;req );&lt;br&gt;&lt;br&gt;    x = image-&amp;gt;allocation.x;&lt;br&gt;    y = image-&amp;gt;allocation.y;&lt;br&gt;&lt;br&gt;    gdk_draw_layout( GDK_DRAWABLE(pixmap),&lt;br&gt;

             gc,&lt;br&gt;             x + (req.width - extents.width) / 2,&lt;br&gt;             y + (req.height - extents.height) / 2,&lt;br&gt;             layout);&lt;br&gt;&lt;br&gt;    g_object_unref (G_OBJECT (gc));&lt;br&gt;    g_object_unref (G_OBJECT (layout));&lt;br&gt;

&lt;br&gt;    GdkColormap *cmap = NULL;&lt;br&gt;    cmap = gtk_widget_get_colormap(image);&lt;br&gt;    gdk_drawable_get_size(pixmap, &amp;amp;pwidth, &amp;amp;pheight);&lt;br&gt;&lt;br&gt;    pixbuf = gdk_pixbuf_get_from_drawable( NULL, pixmap, cmap,&lt;br&gt;             0 , 0,&lt;br&gt;

             0 , 0,&lt;br&gt;             pwidth, pheight );&lt;br&gt;&lt;br&gt;    g_object_unref( pixmap );&lt;br&gt;&lt;br&gt;    GdkPixmap *new_pixmap;&lt;br&gt;    gdk_pixbuf_render_pixmap_and_mask( pixbuf, &amp;amp;new_pixmap, NULL, 1 );&lt;br&gt;&lt;br&gt;    gtk_image_clear( GTK_IMAGE(image) );&lt;br&gt;

    gtk_image_set_from_pixmap( GTK_IMAGE(image), new_pixmap, mask );&lt;br&gt;&lt;br&gt;    g_object_unref( pixbuf );&lt;br&gt;    g_object_unref( cmap );&lt;br&gt;&lt;br&gt;    return TRUE;&lt;br&gt;}&lt;br&gt;&lt;br&gt;G_MODULE_EXPORT gboolean window_expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)&lt;br&gt;

{&lt;br&gt;    char *img_path   = g_build_filename( &amp;quot;background.png&amp;quot;, NULL);&lt;br&gt;    cairo_surface_t *g_imgGlass;&lt;br&gt;    g_imgGlass = cairo_image_surface_create_from_png( img_path );&lt;br&gt;    g_free( img_path );&lt;br&gt;&lt;br&gt;
    cairo_t *cr;&lt;br&gt;
    cr = gdk_cairo_create(widget-&amp;gt;window);&lt;br&gt;    cairo_set_source_surface(cr, g_imgGlass, 0, 0);&lt;br&gt;    cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);&lt;br&gt;    cairo_paint(cr);&lt;br&gt;    cairo_destroy(cr);&lt;br&gt;&lt;br&gt;   return FALSE;&lt;br&gt;

}&lt;br&gt;&lt;br&gt;&lt;br&gt;int main( int argc, char *argv[])&lt;br&gt;{&lt;br&gt;    GtkWidget *window;&lt;br&gt;    GtkWidget *image;&lt;br&gt;    GdkScreen*      screen;&lt;br&gt;    GdkColormap*    colormap;&lt;br&gt;&lt;br&gt;    gtk_init(&amp;amp;argc, &amp;amp;argv);&lt;br&gt;&lt;br&gt;    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);&lt;br&gt;

    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);&lt;br&gt;    gtk_window_set_default_size(GTK_WINDOW(window), 350, 100);&lt;br&gt;    gtk_window_set_title(GTK_WINDOW(window), &amp;quot;XYZ&amp;quot;);&lt;br&gt;    gtk_container_set_border_width(GTK_CONTAINER(window), 5);&lt;br&gt;

    gtk_window_set_resizable( GTK_WINDOW(window), FALSE );&lt;br&gt;    gtk_window_set_decorated(GTK_WINDOW(window), FALSE);&lt;br&gt;    gtk_widget_set_app_paintable(window, TRUE);&lt;br&gt;    gtk_window_set_opacity(GTK_WINDOW(window), 1);&lt;br&gt;

&lt;br&gt;    gtk_widget_set_events(window, GDK_EXPOSURE_MASK&lt;br&gt;              | GDK_ENTER_NOTIFY_MASK&lt;br&gt;              | GDK_LEAVE_NOTIFY_MASK&lt;br&gt;              | GDK_BUTTON_PRESS_MASK&lt;br&gt;              | GDK_BUTTON_RELEASE_MASK&lt;br&gt;

              | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);&lt;br&gt;&lt;br&gt;    g_signal_connect(G_OBJECT(window), &amp;quot;expose-event&amp;quot;, G_CALLBACK(window_expose_cb), NULL);&lt;br&gt;    g_signal_connect(G_OBJECT(window), &amp;quot;destroy&amp;quot;, G_CALLBACK(gtk_main_quit), NULL );&lt;br&gt;

&lt;br&gt;&lt;br&gt;    image = gtk_image_new_from_file(&amp;quot;Button_normal.png&amp;quot;);&lt;br&gt;    gtk_container_add(GTK_CONTAINER(window), image );&lt;br&gt;&lt;br&gt;    DrawTextOnImage(image, &amp;quot;&amp;lt;span size=&amp;#39;large&amp;#39;&amp;gt;&amp;lt;b&amp;gt;Some Text&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;, &amp;quot;#FFFFFF&amp;quot; );&lt;br&gt;

&lt;br&gt;    screen       = gtk_widget_get_screen(window);&lt;br&gt;    colormap     = gdk_screen_get_rgba_colormap(screen);&lt;br&gt;    gtk_widget_set_colormap(window, colormap);&lt;br&gt;&lt;br&gt;    gtk_widget_show_all(window);&lt;br&gt;    gtk_main();&lt;br&gt;

&lt;br&gt;    return 0;&lt;br&gt;}&lt;br&gt;--------------------------------------------------------------------------------------------------------------------------------&lt;br&gt;&lt;br&gt;Some times i get these types of Warnings and Errors:&lt;br&gt;&lt;br&gt;

--------------------------------------------------------------------------------------------------------------------------------&lt;br&gt;(gtkimage:4536): Gtk-CRITICAL **: gtk_widget_set_colormap: assertion `GDK_IS_COLORMAP (colormap)&amp;#39; failed&lt;br&gt;

(gtkimage:6146): Gdk-WARNING **: Attempt to draw a drawable with depth 16 to a drawable with depth 32&lt;br&gt;--------------------------------------------------------------------------------------------------------------------------------&lt;br&gt;

&lt;br&gt;This is how my out put is coming when i set XLIB_SKIP_ARGB_VISUALS=1 and when i set it to 0 i am not able to see the GtkImage on window.&lt;br&gt;&lt;br&gt;This is the pout put screen shot Click Here &lt;br&gt;&amp;lt;image &amp;quot;src=&lt;a href=&quot;http://farm3.static.flickr.com/2678/4149277123%5F8e9138766f%5Fo.jpg&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://farm3.static.flickr.com/2678/4149277123%5F8e9138766f%5Fo.jpg&lt;/a&gt;&amp;quot;/&amp;gt;&lt;br&gt;

&lt;br&gt;why this must be happening can some one please provide some help on this issue?&lt;br&gt;I am really Stuck on this.&lt;br&gt;Any Expert for Cairo, Pango and Gtk+ here please help?&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks,&lt;br&gt;&lt;br&gt;AB.&lt;br&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26610301&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gtk-Critical-Error-While-Using-Cairo-and-Pango.-tp26610301p26610301.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26610299</id>
	<title>GtjComboBox question</title>
	<published>2009-12-01T00:15:40Z</published>
	<updated>2009-12-01T00:15:40Z</updated>
	<author>
		<name>ikorot</name>
	</author>
	<content type="html">Hi, ALL,
&lt;br&gt;Is there a function to show a list box of a combo box?
&lt;br&gt;&lt;br&gt;It looks like gtk_combo_box_popup() is what I'm looking for,
&lt;br&gt;but the documentation says that it should be used with an
&lt;br&gt;accessibility pack.
&lt;br&gt;&lt;br&gt;Thank you.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26610299&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GtjComboBox-question-tp26610299p26610299.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26584619</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T16:25:08Z</published>
	<updated>2009-11-30T16:25:08Z</updated>
	<author>
		<name>Ryan Lortie</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;On Mon, 2009-11-30 at 21:08 +0100, Christian Persch wrote:
&lt;br&gt;&amp;gt; schrieb Ryan Lortie &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26584619&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;desrt@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;gt; Note that you can do in-place parsing of:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;quot;( { 'zero': 0, 'one': 1, 'two': 2 }, '' )&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; if you prefer.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If I have to build the string at runtime, I can just as well use
&lt;br&gt;&amp;gt; GVariantBuilder directly. 
&lt;br&gt;&lt;br&gt;Sorry. &amp;nbsp;I should have mentioned. &amp;nbsp;This also works:
&lt;br&gt;&lt;br&gt;g_variant_new_parsed (&amp;quot;{ 'zero': %i, 'one': %i, 'two': %i }&amp;quot;, 0, 1, 2);
&lt;br&gt;&lt;br&gt;Where the part after the '%' is any GVariant format string -- the
&lt;br&gt;arguments are collected from the varargs list as if you were using
&lt;br&gt;g_variant_new() with that string.
&lt;br&gt;&lt;br&gt;I hope that makes things nicer.
&lt;br&gt;&lt;br&gt;cheers
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26584619&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26584619.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26584470</id>
	<title>GTK+ 2.19.1 released</title>
	<published>2009-11-30T16:10:17Z</published>
	<updated>2009-11-30T16:10:17Z</updated>
	<author>
		<name>Matthias Clasen</name>
	</author>
	<content type="html">GTK+ 2.19.1 is now available for download at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;ftp://ftp.gtk.org/pub/gtk/2.19/
&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://download.gnome.org/sources/gtk+/2.19/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://download.gnome.org/sources/gtk+/2.19/&lt;/a&gt;&lt;br&gt;&lt;br&gt;md5 sums:
&lt;br&gt;d11e2044aedc49e155832c54dc9ac548 &amp;nbsp;gtk+-2.19.1.tar.bz2
&lt;br&gt;d0a5dc39ba91dfacaed68f2ef5d36e8e &amp;nbsp;gtk+-2.19.1.tar.gz
&lt;br&gt;&lt;br&gt;sha1 sums:
&lt;br&gt;daf7252027555212091896d96244fdc141ebbfa8 &amp;nbsp;gtk+-2.19.1.tar.bz2
&lt;br&gt;4d0175ff31ad7fba61d2deb6a80933ebb6bda7e0 &amp;nbsp;gtk+-2.19.1.tar.gz
&lt;br&gt;&lt;br&gt;This is a development release leading up to GTK+ 2.20.
&lt;br&gt;&lt;br&gt;Notes:
&lt;br&gt;&lt;br&gt;&amp;nbsp;* This is an unstable development release.
&lt;br&gt;&amp;nbsp; &amp;nbsp;It has had only little testing and there are unfinished
&lt;br&gt;&amp;nbsp; &amp;nbsp;features and plenty of bugs in this release. It should
&lt;br&gt;&amp;nbsp; &amp;nbsp;definitively not be used in production.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* Installing this version will overwrite your existing
&lt;br&gt;&amp;nbsp; &amp;nbsp;copy of GTK+ 2.18. If you have problems, you'll need
&lt;br&gt;&amp;nbsp; &amp;nbsp;to reinstall GTK+ 2.18.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* GTK+ 2.20 will be source and binary compatible with
&lt;br&gt;&amp;nbsp; &amp;nbsp;the GTK+ 2.18 series; however, the new API additions
&lt;br&gt;&amp;nbsp; &amp;nbsp;are not yet finalized, so there may be incompatibilities
&lt;br&gt;&amp;nbsp; &amp;nbsp;between this release and the final 2.20 release.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* Bugs should be reported to &lt;a href=&quot;http://bugzilla.gnome.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;&lt;br&gt;What is GTK+
&lt;br&gt;============
&lt;br&gt;&lt;br&gt;GTK+ is a multi-platform toolkit for creating graphical user
&lt;br&gt;interfaces. Offering a complete set of widgets, GTK+ is suitable for
&lt;br&gt;projects ranging from small one-off tools to complete application
&lt;br&gt;suites.
&lt;br&gt;&lt;br&gt;GTK+ has been designed from the ground up to support a range of
&lt;br&gt;languages, not only C/C++. Using GTK+ from languages such as Perl and
&lt;br&gt;Python (especially in combination with the Glade GUI builder) provides
&lt;br&gt;an effective method of rapid application development.
&lt;br&gt;&lt;br&gt;GTK+ is free software and part of the GNU Project. However, the
&lt;br&gt;licensing terms for GTK+, the GNU LGPL, allow it to be used by all
&lt;br&gt;developers, including those developing proprietary software, without
&lt;br&gt;any license fees or royalties.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Where to get more information about GTK+
&lt;br&gt;========================================
&lt;br&gt;&lt;br&gt;Information about GTK+ including links to documentation can be
&lt;br&gt;found at:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.gtk.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;An installation guide for GTK+ 2.x is found at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Common questions:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-question-index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-question-index.html&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.gtk.org/faq/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/faq/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Contributing
&lt;br&gt;============
&lt;br&gt;&lt;br&gt;GTK+ is a large project and relies on voluntary contributions.
&lt;br&gt;We are actively searching for new contributors in various areas
&lt;br&gt;and invite everyone to help project development.
&lt;br&gt;If you are willing to participate, please subscribe to the project
&lt;br&gt;mailing lists to offer your help and read over our list of vacant
&lt;br&gt;project tasks:
&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://live.gnome.org/GtkTasks&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/GtkTasks&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Overview of Changes from GTK+ 2.19.0 to 2.19.1
&lt;br&gt;==============================================
&lt;br&gt;&lt;br&gt;* Client-side windows:
&lt;br&gt;&amp;nbsp;- Avoid some unnecessary exposes
&lt;br&gt;&amp;nbsp;- Avoid unnecessary redraws related to clearing windows
&lt;br&gt;&lt;br&gt;* GtkNotebook gained an 'action area'
&lt;br&gt;&lt;br&gt;* GtkStatusbar gained a 'message area'
&lt;br&gt;&lt;br&gt;* GtkToolPalette is a new container to show tool items
&lt;br&gt;&amp;nbsp; in collapsible groups in a grid
&lt;br&gt;&lt;br&gt;* gdk-pixbuf can now handle compressed TIFF images
&lt;br&gt;&lt;br&gt;* GSEAL work:
&lt;br&gt;&amp;nbsp;- New accessor: gtk_window_get_window_type()
&lt;br&gt;&lt;br&gt;* Bugs fixed:
&lt;br&gt;&amp;nbsp;590017 &amp;nbsp;Does not compile under MinGW32 + Wine
&lt;br&gt;&amp;nbsp;569430 Gail should include a reciprocal relationship for NODE_CHILD_OF
&lt;br&gt;&amp;nbsp;598758 Need context for a propper translation
&lt;br&gt;&amp;nbsp;594535 No accesor for GtkStatusbar-&amp;gt;label and -&amp;gt;frame
&lt;br&gt;&amp;nbsp;602725 fix setting icon-size on GICON images
&lt;br&gt;&amp;nbsp;599402 Landscape and Reverse Landscape icons need to be swapped
&lt;br&gt;&amp;nbsp;588740 JPEG images open with blur effect?
&lt;br&gt;&amp;nbsp;601337 Only use gdk_input_select_events() if XINPUT_NONE is defined
&lt;br&gt;&amp;nbsp;598050 Flickering in a gtk_socket
&lt;br&gt;&amp;nbsp;600158 Do not use static GTypeInfo and GInterfaceInfo
&lt;br&gt;&amp;nbsp;561973 Problem dragging images from Firefox to GTK+ app on Windows
&lt;br&gt;&amp;nbsp;601512 Remove unnecessary check in GtkTreeModelFilter
&lt;br&gt;&amp;nbsp;600222 Check for existence of cairo-svg.h in configure.in
&lt;br&gt;&amp;nbsp;595498 No accesor for GTK_WINDOW ()-&amp;gt;type
&lt;br&gt;&amp;nbsp;116650 &amp;quot;action area&amp;quot; for GtkNotebook (e.g. for tab close button)
&lt;br&gt;&amp;nbsp;600150 GtkColorSelection tooltip issues
&lt;br&gt;&amp;nbsp;480065 wrong tree collapsed (or expanded) after having scrolled
&lt;br&gt;&amp;nbsp;596473 Second double-click of GtkTreeView row doesn't emit...
&lt;br&gt;&amp;nbsp;601869 GtkUIManager assumes too much about popup menus
&lt;br&gt;&amp;nbsp;581145 Wrong positioning for fullscreen gedit toolbar animation
&lt;br&gt;&amp;nbsp;602724 gailimage doesn't handle GTK_IMAGE_{GICON,ICON_NAME}...
&lt;br&gt;&amp;nbsp;561130 get_monitor_geometry segfaults if called with non-existant...
&lt;br&gt;&amp;nbsp;597026 Missing include for memset()
&lt;br&gt;&amp;nbsp;585383 Segfault in gdk_pixbuf__ico_image_save
&lt;br&gt;&amp;nbsp;597865 Move documentation from templates to inline comments
&lt;br&gt;&amp;nbsp;123569 Catch contents being reparented out of socket
&lt;br&gt;&amp;nbsp;561334 Incorrect named constant in documentation of two GtkButton...
&lt;br&gt;&amp;nbsp;601611 gtk_selection_data_get_targets() reads X Atom data as GdkAtoms
&lt;br&gt;&amp;nbsp;601409 action area presence modifies notebook behaviour
&lt;br&gt;&amp;nbsp;603268 wrong Since: markers in toolpalette merge
&lt;br&gt;&amp;nbsp;603271 wrong toolbar style
&lt;br&gt;&amp;nbsp;601959 must release compose key before continuing compose sequence
&lt;br&gt;&amp;nbsp;603302 Incorrectly warn about links on text with color and underline
&lt;br&gt;&amp;nbsp;603201 gtk_about_dialog_set_url_hook has no effect anymore
&lt;br&gt;&amp;nbsp;591438 dfb_events_dispatch is not thread safe
&lt;br&gt;&amp;nbsp;589842 GtkAction API to have its menu item proxies have always-show...
&lt;br&gt;&amp;nbsp;584700 TIFF pixbuf loader should support compression
&lt;br&gt;&amp;nbsp;603128 Adding new UI that was recently removed may cause wrong order
&lt;br&gt;&amp;nbsp;601682 Print preview should use gtk_show_uri by default
&lt;br&gt;&amp;nbsp;596083 Deprecate notebook label packing functionality
&lt;br&gt;&lt;br&gt;* Updated translations:
&lt;br&gt;&amp;nbsp;Estonian
&lt;br&gt;&amp;nbsp;Galician
&lt;br&gt;&amp;nbsp;Japanese
&lt;br&gt;&amp;nbsp;Low German
&lt;br&gt;&amp;nbsp;Norwegian bokmål
&lt;br&gt;&amp;nbsp;Punjabi
&lt;br&gt;&amp;nbsp;Slovenian
&lt;br&gt;&amp;nbsp;Spanish
&lt;br&gt;&amp;nbsp;Swedish
&lt;br&gt;&lt;br&gt;Thanks to all contributors:
&lt;br&gt;Alexander Larsson
&lt;br&gt;Tor Lillqvist
&lt;br&gt;Tomas Bzatek
&lt;br&gt;Chris Wilson
&lt;br&gt;Tim Janik
&lt;br&gt;Cody Russell
&lt;br&gt;Sven Herzberg
&lt;br&gt;Benjamin Otte
&lt;br&gt;Carlo Bramini
&lt;br&gt;Hib Eris
&lt;br&gt;Paolo Bonzini
&lt;br&gt;Stéphane Démurget
&lt;br&gt;Ryan Lortie
&lt;br&gt;Javier Jardón
&lt;br&gt;Vincent Untz
&lt;br&gt;Christian Dywan
&lt;br&gt;Juan A. Suarez Romero
&lt;br&gt;Xan Lopez
&lt;br&gt;Christian Persch
&lt;br&gt;Will Thompson
&lt;br&gt;Kristian Rietveld
&lt;br&gt;Michael Natterer
&lt;br&gt;&lt;br&gt;&lt;br&gt;November 30, 2009
&lt;br&gt;Matthias Clasen
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26584470&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-2.19.1-released-tp26584470p26584470.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26582480</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T13:42:00Z</published>
	<updated>2009-11-30T13:42:00Z</updated>
	<author>
		<name>Behdad Esfahbod-3</name>
	</author>
	<content type="html">On 11/30/2009 08:30 AM, Matthias Clasen wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, Nov 30, 2009 at 7:27 AM, Christian Persch&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26582480&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;chpe@...&lt;/a&gt;&amp;gt; &amp;nbsp;wrote:
&lt;br&gt;&amp;gt;&amp;gt; Hi;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - g_variant_type_matches docs say: &amp;quot;This function defines a bounded
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; join-semilattice over GVariantType for which G_VARIANT_TYPE_ANY is
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; top.&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; If you do want to go into that much detail, there should be a
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; more complete definition of how that ... thing ... is constructed :-)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'd just drop that kind of thing; I did study lattice theory and know
&lt;br&gt;&amp;gt; what a bounded join-semilattice is, but I doubt this information will
&lt;br&gt;&amp;gt; help anybody to use GVariant...
&lt;/div&gt;&lt;br&gt;Isn't the hierarchy simply a tree?
&lt;br&gt;&lt;br&gt;behdad
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26582480&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26582480.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26582076</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T13:18:10Z</published>
	<updated>2009-11-30T13:18:10Z</updated>
	<author>
		<name>Simon McVittie-6</name>
	</author>
	<content type="html">On Mon, 30 Nov 2009 at 21:08:54 +0100, Christian Persch wrote:
&lt;br&gt;&amp;gt; We do have that already with G_GINT*_FORMAT, G_GS[S]IZE_FORMAT,
&lt;br&gt;&amp;gt; G_GOFFSET_FORMAT, and at least the G[S]SIZE one is useful.
&lt;br&gt;&lt;br&gt;I was under the impression that those were mainly to support the fact that the
&lt;br&gt;right printf character varies by platform? For instance, gsize can either be
&lt;br&gt;%u or %lu, and goffset could reasonably be anything from %i to %lli.
&lt;br&gt;&lt;br&gt;There's no G_GINT_FORMAT, because it would be %i everywhere by definition,
&lt;br&gt;but because printf formats and default promotions (varargs) are defined in
&lt;br&gt;terms of int/long/long long instead of 16/32/64 bit types, the fixed-length
&lt;br&gt;types need these macros.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; S
&lt;br&gt;&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26582076&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (809 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26582076/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26582076.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581127</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T12:15:27Z</published>
	<updated>2009-11-30T12:15:27Z</updated>
	<author>
		<name>Christian Persch</name>
	</author>
	<content type="html">Hi;
&lt;br&gt;&lt;br&gt;Simon McVittie &amp;lt;simon mcvittie collabora co uk&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, 30 Nov 2009 at 13:27:02 +0100, Christian Persch wrote:
&lt;br&gt;&amp;gt; &amp;gt; - space efficiency: I was trying to build a variant containing some
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; data, and multiple dicts to get at the data from various keys. i.e
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;quot;a{sv}a{sv}a{sv}&amp;quot;. I though that if I constructed the data
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; GVariants first, and then added these to the dicts (i.e.
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; v=g_variant_new(), add (key1, v) to dict1, add (key2, v) to dict2
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; etc), the resulting blob (g_variant_flatten
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; + get the data out) would contain that data only once instead of
&lt;br&gt;&amp;gt; &amp;gt; once for each dict it was in.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The D-Bus serialization format (which is also the GVariant
&lt;br&gt;&amp;gt; serialization format) doesn't have backreferences to
&lt;br&gt;&amp;gt; previously-serialized data, so yes, your data will get duplicated if
&lt;br&gt;&amp;gt; you do this.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In practice, the big cost on D-Bus tends to be number of round trips /
&lt;br&gt;&amp;gt; wait-for-reply operations, rather than the number of bytes
&lt;br&gt;&amp;gt; transferred, so a bit of redundancy isn't a big deal.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I can see that the tradeoffs for storage on disk aren't the same as
&lt;br&gt;&amp;gt; the tradeoffs for D-Bus; but, gzip the blob? :-)
&lt;/div&gt;&lt;br&gt;Yes, I tried to use GVariant to store lots of data on disk, to be
&lt;br&gt;mmaped, and not for transfer over dbus or network. So space efficiency
&lt;br&gt;would be good, but by using gzip I would lose the ability to just mmap
&lt;br&gt;the data directly.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Christian
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581127&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26581127.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581033</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T12:08:54Z</published>
	<updated>2009-11-30T12:08:54Z</updated>
	<author>
		<name>Christian Persch</name>
	</author>
	<content type="html">Hi;
&lt;br&gt;&lt;br&gt;Am Mon, 30 Nov 2009 11:31:10 -0500
&lt;br&gt;schrieb Ryan Lortie &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581033&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;desrt@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, 2009-11-30 at 13:27 +0100, Christian Persch wrote:
&lt;br&gt;&amp;gt; &amp;gt; - There really should be a GVariant tutorial, not just the API
&lt;br&gt;&amp;gt; &amp;gt; docs. If I hadn't at least had a vague idea what GVariant does, I
&lt;br&gt;&amp;gt; &amp;gt; would have been completely helpless with the API docs. Even so, I
&lt;br&gt;&amp;gt; &amp;gt; had to proceed by trial-and-error by copying what the tests do...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I totally agree with this. &amp;nbsp;I've even considered using
&lt;br&gt;&amp;gt; example/tutorial style documentation in place of full proper
&lt;br&gt;&amp;gt; reference documentation in some places since it's difficult to
&lt;br&gt;&amp;gt; formally describe, for example, GVariant format strings, but quite
&lt;br&gt;&amp;gt; easy to show how to use them by example.
&lt;/div&gt;&lt;br&gt;Agreed. The examples in tests/ helped me greatly to understand how it's
&lt;br&gt;supposed to work.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; - Type strings: to construct them, you need to remember which
&lt;br&gt;&amp;gt; &amp;gt; character is which type. There are the G_VARIANT_TYPE_* defines,
&lt;br&gt;&amp;gt; &amp;gt; but they are non-concatenable, i.e. you can't construct a type
&lt;br&gt;&amp;gt; &amp;gt; string like G_VARIANT_TYPE_A G_VARIANT_TYPE_B but have to use &amp;quot;ab&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt; which makes typos uncaught at the compiler stage. Could there also
&lt;br&gt;&amp;gt; &amp;gt; be concatenable #defines for these?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; My attitude about this is that you should &amp;quot;just deal&amp;quot;. &amp;nbsp;Basically,
&lt;br&gt;&amp;gt; reserve some extra brain cells for it and memorise it -- just like
&lt;br&gt;&amp;gt; printf. &amp;nbsp;The fact that it's the same as the DBus type system means
&lt;br&gt;&amp;gt; that you can even share those brain cells. :)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Consider if we had to write things like:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; g_strdup_print (&amp;quot;int: &amp;quot; G_PRINTF_TYPE_INTEGER &amp;quot;, &amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;float: &amp;quot; G_PRINTF_TYPE_FLOAT &amp;quot;\n&amp;quot;, 234, 2.5);
&lt;/div&gt;&lt;br&gt;We do have that already with G_GINT*_FORMAT, G_GS[S]IZE_FORMAT,
&lt;br&gt;G_GOFFSET_FORMAT, and at least the G[S]SIZE one is useful.
&lt;br&gt;&lt;br&gt;Personally, I find it much easier to type more
&lt;br&gt;(maybe &amp;quot;G_VARIANT_TYPE_XYZ_S&amp;quot;) instead of thinking more (&amp;quot;which
&lt;br&gt;character correspond type XYZ to, again&amp;quot;)? Plus, it's typo-safe at
&lt;br&gt;compile-time. 
&lt;br&gt;&lt;br&gt;Then again, thanks to GVariant's liberal use of g_error(), you find out
&lt;br&gt;quickly about typos at runtime.
&lt;br&gt;&lt;br&gt;&amp;gt; I think this really injures the readability.
&lt;br&gt;&lt;br&gt;True.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; - g_variant_builder_add[_value]: should this return the
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; passed-in GVariantBuilder* instead of void, so one can chain
&lt;br&gt;&amp;gt; &amp;gt; calls?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That's an interesting proposal. &amp;nbsp;It's very evil in terms of refcounts,
&lt;br&gt;&amp;gt; but the refcounting semantics of GVariantBuilder are fairly unbindable
&lt;br&gt;&amp;gt; at this point anyway, so who cares about some extra magic? :)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Can you give me a good example of a use case you have here?
&lt;br&gt;&lt;br&gt;Since the g_variant_new (&amp;quot;aX&amp;quot;, N, &amp;lt;v1&amp;gt;, &amp;lt;v2&amp;gt;, ..., &amp;lt;vN&amp;gt;) way didn't
&lt;br&gt;exist anymore, my first idea was to do something like this:
&lt;br&gt;&lt;br&gt;v = g_variant_builder_end (
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; g_variant_builder_add (
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g_variant_builder_add (
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g_variant_builder_add (
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g_variant_builder_new (...),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;v1&amp;gt;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;v2&amp;gt;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;v3&amp;gt;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;vN&amp;gt;)
&lt;br&gt;&lt;br&gt;Not very elegant, and backwards, but works for short arrays.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Do you have another method you'd prefer for array construction? &amp;nbsp;Maybe
&lt;br&gt;&amp;gt; one that collects each array item from the varargs list? &amp;nbsp;Is that
&lt;br&gt;&amp;gt; evil?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; This appears to have been changed from earlier code; in the
&lt;br&gt;&amp;gt; &amp;gt; removed glib/tests/gvariant-complex.c test, it was done this way:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; variant = g_variant_new (&amp;quot;(a{si}s)&amp;quot;,
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3,
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;zero&amp;quot;, 0,
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;one&amp;quot;, &amp;nbsp;1,
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;two&amp;quot;, &amp;nbsp;2,
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; IMHO a vastly more convenient way to build an array in one step,
&lt;br&gt;&amp;gt; &amp;gt; in case one already knows how many elements one has and what they
&lt;br&gt;&amp;gt; &amp;gt; are.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; Could there again be a convenience method like this?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; mmm. &amp;nbsp;Yes. &amp;nbsp;It used to be like that, indeed. &amp;nbsp;The reason that I
&lt;br&gt;&amp;gt; removed it was because it was not possible to have a dual of it for
&lt;br&gt;&amp;gt; g_variant_get() and I'm trying to keep g_variant_new() as similar to
&lt;br&gt;&amp;gt; g_variant_get() as is possible.
&lt;/div&gt;&lt;br&gt;Ok. 
&lt;br&gt;&lt;br&gt;&amp;gt; Note that you can do in-place parsing of:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;quot;( { 'zero': 0, 'one': 1, 'two': 2 }, '' )&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; if you prefer.
&lt;br&gt;&lt;br&gt;If I have to build the string at runtime, I can just as well use
&lt;br&gt;GVariantBuilder directly. 
&lt;br&gt;&lt;br&gt;On the other hand, if the string is known at compile time, that brings
&lt;br&gt;me to one point I forgot to mention in the original mail. It'd be great
&lt;br&gt;if there was a standalone gvariant compiler (à la glib-genmarshal /
&lt;br&gt;glib-mkenums) that takes gvariant markup input, and writes, chosen by a
&lt;br&gt;command line option, one of
&lt;br&gt;&lt;br&gt;- a binary blob that I can then use with g_variant_from_file(), and
&lt;br&gt;&lt;br&gt;- source code (static const guint8 myvariant_data[] = { ... }), that
&lt;br&gt;&amp;nbsp; I can use with g_variant_from_data().
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; - space efficiency: I was trying to build a variant containing some
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; data, and multiple dicts to get at the data from various keys. i.e
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;quot;a{sv}a{sv}a{sv}&amp;quot;. I though that if I constructed the data
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; GVariants first, and then added these to the dicts (i.e.
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; v=g_variant_new(), add (key1, v) to dict1, add (key2, v) to dict2
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; etc), the resulting blob (g_variant_flatten
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; + get the data out) would contain that data only once instead of
&lt;br&gt;&amp;gt; &amp;gt; once for each dict it was in. Well, it didn't work :-) 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; Was that a naive/dumb thing to expect, or can this be made to
&lt;br&gt;&amp;gt; &amp;gt; work? 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; I ended up doing &amp;quot;ava{su}a{su}a{su}&amp;quot;, first putting the data into
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; an array, then the index of the data in the array into the dicts.
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; Is that the best way for this?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This is the recommended way, yes. &amp;nbsp;If you have the data appearing
&lt;br&gt;&amp;gt; multiple times then it will appear multiple times. &amp;nbsp;There is no
&lt;br&gt;&amp;gt; compression here.
&lt;/div&gt;&lt;br&gt;Ok.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; - gvariant-*.c fail to #include &amp;quot;config.h&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What's the policy on this sort of thing? &amp;nbsp;Include everywhere or only
&lt;br&gt;&amp;gt; include if needed?
&lt;br&gt;&lt;br&gt;Afaik it's &amp;quot;everywhere&amp;quot;.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; - the code uses literal 'X' / &amp;quot;X&amp;quot; in many places; IMHO using
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; G_VARIANT_TYPE_CLASS_X / G_VARIANT_TYPE_X would make the code more
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; readable / informative
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; All I can say to this is that it's easier to type this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; case 'a': case 'b': case 'c': case 'd':
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; than:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; case G_VARIANT_TYPE_CLASS_ALPHA:
&lt;br&gt;&amp;gt; &amp;nbsp; case G_VARIANT_TYPE_CLASS_BETA:
&lt;br&gt;&amp;gt; &amp;nbsp; case G_VARIANT_TYPE_CLASS_GAMMA:
&lt;br&gt;&amp;gt; &amp;nbsp; case G_VARIANT_TYPE_CLASS_DELTA:
&lt;/div&gt;&lt;br&gt;Indeed, it's easier to type, but the long form is easier to read and
&lt;br&gt;for code review. Anyway, it's not that important; just a personal
&lt;br&gt;preference.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; - g_variant_parse_full is rather unusual in that it returns an error
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; not in a GError but a GVariantParseError. Could this be
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; implemented instead by fixing bug 124022
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; [&lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=124022&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugzilla.gnome.org/show_bug.cgi?id=124022&lt;/a&gt;] and then using
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; that to put the extra data into a GError? 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Does this bug have any hope of being fixed any time soon?
&lt;br&gt;&lt;br&gt;I just attached a patch there, which should at least raise the
&lt;br&gt;probability a bit :-)
&lt;br&gt;&lt;br&gt;&amp;gt; The GSettings schema file parser calls the _full variant to parse
&lt;br&gt;&amp;gt; default values out of schema files. &amp;nbsp;The extra information is used to
&lt;br&gt;&amp;gt; tie-in to the error reporting system of that parser which does
&lt;br&gt;&amp;gt; Vala-style reporting of the lcation of errors.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ^^^^^^^
&lt;br&gt;&lt;br&gt;I see. In that case, it's indeed good to have more info.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Christian
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581033&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26581033.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26580989</id>
	<title>Re: Merging gobject-performance-2 branch</title>
	<published>2009-11-30T12:06:01Z</published>
	<updated>2009-11-30T12:06:01Z</updated>
	<author>
		<name>Alexander Larsson</name>
	</author>
	<content type="html">On Mon, 2009-11-30 at 08:18 -0500, Matthias Clasen wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, Nov 30, 2009 at 5:52 AM, Alexander Larsson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26580989&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Now, how do we get this branch merged? A whole lot of people have
&lt;br&gt;&amp;gt; &amp;gt; reviewed this and everyone seems to think it looks good. The
&lt;br&gt;&amp;gt; speedups
&lt;br&gt;&amp;gt; &amp;gt; and scalability changes in this branch are very important for
&lt;br&gt;&amp;gt; threaded
&lt;br&gt;&amp;gt; &amp;gt; apps.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've just done a glib 2.23.0 release. Merging the performance branch
&lt;br&gt;&amp;gt; now seems like the right thing to me; if Tim wants to review this,
&lt;br&gt;&amp;gt; there is some time before the next release. We need to get things
&lt;br&gt;&amp;gt; moving here...
&lt;/div&gt;&lt;br&gt;All right. I rebased this to the current master (fixing one conflict),
&lt;br&gt;cleaned it up a bit (reordered and joined commits, etc), then merged it
&lt;br&gt;to master.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
&lt;br&gt;&amp;nbsp;Alexander Larsson &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Red Hat, Inc 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26580989&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexl@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26580989&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.larsson@...&lt;/a&gt; 
&lt;br&gt;He's an old-fashioned coffee-fuelled farmboy searching for his wife's true 
&lt;br&gt;killer. She's a violent cigar-chomping research scientist looking for love in 
&lt;br&gt;all the wrong places. They fight crime! 
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26580989&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Merging-gobject-performance-2-branch-tp26572691p26580989.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26577710</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T08:38:18Z</published>
	<updated>2009-11-30T08:38:18Z</updated>
	<author>
		<name>Simon McVittie-6</name>
	</author>
	<content type="html">On Mon, 30 Nov 2009 at 13:27:02 +0100, Christian Persch wrote:
&lt;br&gt;&amp;gt; - space efficiency: I was trying to build a variant containing some
&lt;br&gt;&amp;gt; &amp;nbsp; data, and multiple dicts to get at the data from various keys. i.e
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;quot;a{sv}a{sv}a{sv}&amp;quot;. I though that if I constructed the data
&lt;br&gt;&amp;gt; &amp;nbsp; GVariants first, and then added these to the dicts (i.e.
&lt;br&gt;&amp;gt; &amp;nbsp; v=g_variant_new(), add (key1, v) to dict1, add (key2, v) to dict2
&lt;br&gt;&amp;gt; &amp;nbsp; etc), the resulting blob (g_variant_flatten
&lt;br&gt;&amp;gt; &amp;nbsp; + get the data out) would contain that data only once instead of once
&lt;br&gt;&amp;gt; &amp;nbsp; for each dict it was in.
&lt;br&gt;&lt;br&gt;The D-Bus serialization format (which is also the GVariant serialization
&lt;br&gt;format) doesn't have backreferences to previously-serialized data, so yes,
&lt;br&gt;your data will get duplicated if you do this.
&lt;br&gt;&lt;br&gt;In practice, the big cost on D-Bus tends to be number of round trips /
&lt;br&gt;wait-for-reply operations, rather than the number of bytes transferred, so
&lt;br&gt;a bit of redundancy isn't a big deal.
&lt;br&gt;&lt;br&gt;I can see that the tradeoffs for storage on disk aren't the same as the
&lt;br&gt;tradeoffs for D-Bus; but, gzip the blob? :-)
&lt;br&gt;&lt;br&gt;(Having backreferences would break compatibility between GVariant and D-Bus,
&lt;br&gt;and would also break the desirable property that parts of a message are
&lt;br&gt;entirely independent - as I understand it, GVariant takes advantage of that
&lt;br&gt;internally.)
&lt;br&gt;&lt;br&gt;&amp;gt; - there should be a convenience function that takes a dictionary
&lt;br&gt;&amp;gt; &amp;nbsp; variant and turns it into a GHashTable (I was surprised that
&lt;br&gt;&amp;gt; &amp;nbsp; g_variant_lookup[_value] just iterates over the whole thing until a
&lt;br&gt;&amp;gt; &amp;nbsp; match is found)
&lt;br&gt;&lt;br&gt;As I mentioned on a related bug, I'd be inclined to say that the lookup
&lt;br&gt;function should construct a cache the first time, and query it subsequently
&lt;br&gt;(so it'd be O(n) the first time it was used, and O(1) thereafter).
&lt;br&gt;&lt;br&gt;&amp;gt; - the code uses literal 'X' / &amp;quot;X&amp;quot; in many places; IMHO using
&lt;br&gt;&amp;gt; &amp;nbsp; G_VARIANT_TYPE_CLASS_X / G_VARIANT_TYPE_X would make the code more
&lt;br&gt;&amp;gt; &amp;nbsp; readable / informative
&lt;br&gt;&lt;br&gt;Perhaps it's a sign that I do too much D-Bus, but I find code that uses the
&lt;br&gt;plain signature strings (&amp;quot;a{sv}&amp;quot;) to be much, much more readable than
&lt;br&gt;DBUS_TYPE_ARRAY DBUS_TYPE_STRUCT_ENTRY_BEGIN DBUS_TYPE_STRING DBUS_TYPE_VARIANT
&lt;br&gt;DBUS_TYPE_STRUCT_ENTRY_END (or whatever the libdbus constants are really
&lt;br&gt;called).
&lt;br&gt;&lt;br&gt;The signature characters are all quite mnemonic, apart from the 16- and 64-bit
&lt;br&gt;integers (I can never remember whether 't' or 'x' is the unsigned one).
&lt;br&gt;&lt;br&gt;There's lots of prior art, notably printf/scanf and Python's Py_BuildValue /
&lt;br&gt;PyArgs_ParseTuple.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;&amp;nbsp; &amp;nbsp; Simon
&lt;br&gt;&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26577710&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (809 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26577710/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26577710.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26577584</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T08:31:10Z</published>
	<updated>2009-11-30T08:31:10Z</updated>
	<author>
		<name>Ryan Lortie</name>
	</author>
	<content type="html">Hi Christian
&lt;br&gt;&lt;br&gt;On Mon, 2009-11-30 at 13:27 +0100, Christian Persch wrote:
&lt;br&gt;&amp;gt; Hi;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've been playing with the gvariant branch of glib a bit, and have a
&lt;br&gt;&amp;gt; few questions / remarks / code comments. I hope they're marginally
&lt;br&gt;&amp;gt; useful :-)
&lt;br&gt;&lt;br&gt;Thanks so much for this feedback. &amp;nbsp;It's extremely valuable.
&lt;br&gt;&lt;br&gt;&amp;gt; - There really should be a GVariant tutorial, not just the API docs. If
&lt;br&gt;&amp;gt; &amp;nbsp; I hadn't at least had a vague idea what GVariant does, I would have
&lt;br&gt;&amp;gt; &amp;nbsp; been completely helpless with the API docs. Even so, I had to proceed
&lt;br&gt;&amp;gt; &amp;nbsp; by trial-and-error by copying what the tests do...
&lt;br&gt;&lt;br&gt;I totally agree with this. &amp;nbsp;I've even considered using example/tutorial
&lt;br&gt;style documentation in place of full proper reference documentation in
&lt;br&gt;some places since it's difficult to formally describe, for example,
&lt;br&gt;GVariant format strings, but quite easy to show how to use them by
&lt;br&gt;example.
&lt;br&gt;&lt;br&gt;&amp;gt; - Type strings: to construct them, you need to remember which character
&lt;br&gt;&amp;gt; &amp;nbsp; is which type. There are the G_VARIANT_TYPE_* defines, but they are
&lt;br&gt;&amp;gt; &amp;nbsp; non-concatenable, i.e. you can't construct a type string like
&lt;br&gt;&amp;gt; &amp;nbsp; G_VARIANT_TYPE_A G_VARIANT_TYPE_B but have to use &amp;quot;ab&amp;quot; which makes
&lt;br&gt;&amp;gt; &amp;nbsp; typos uncaught at the compiler stage. Could there also be
&lt;br&gt;&amp;gt; &amp;nbsp; concatenable #defines for these?
&lt;br&gt;&lt;br&gt;My attitude about this is that you should &amp;quot;just deal&amp;quot;. &amp;nbsp;Basically,
&lt;br&gt;reserve some extra brain cells for it and memorise it -- just like
&lt;br&gt;printf. &amp;nbsp;The fact that it's the same as the DBus type system means that
&lt;br&gt;you can even share those brain cells. :)
&lt;br&gt;&lt;br&gt;Consider if we had to write things like:
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_strdup_print (&amp;quot;int: &amp;quot; G_PRINTF_TYPE_INTEGER &amp;quot;, &amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;float: &amp;quot; G_PRINTF_TYPE_FLOAT &amp;quot;\n&amp;quot;, 234, 2.5);
&lt;br&gt;&lt;br&gt;I think this really injures the readability.
&lt;br&gt;&lt;br&gt;&amp;gt; - g_variant_type_matches docs say: &amp;quot;This function defines a bounded
&lt;br&gt;&amp;gt; &amp;nbsp; join-semilattice over GVariantType for which G_VARIANT_TYPE_ANY is
&lt;br&gt;&amp;gt; &amp;nbsp; top.&amp;quot; 
&lt;br&gt;&amp;gt; &amp;nbsp; If you do want to go into that much detail, there should be a
&lt;br&gt;&amp;gt; &amp;nbsp; more complete definition of how that ... thing ... is constructed :-)
&lt;br&gt;&lt;br&gt;It's a bit of an easter-egg in the docs. &amp;nbsp;I don't mind too much to
&lt;br&gt;remove it.
&lt;br&gt;&lt;br&gt;&amp;gt; - g_variant_builder_add[_value]: should this return the
&lt;br&gt;&amp;gt; &amp;nbsp; passed-in GVariantBuilder* instead of void, so one can chain calls?
&lt;br&gt;&lt;br&gt;That's an interesting proposal. &amp;nbsp;It's very evil in terms of refcounts,
&lt;br&gt;but the refcounting semantics of GVariantBuilder are fairly unbindable
&lt;br&gt;at this point anyway, so who cares about some extra magic? :)
&lt;br&gt;&lt;br&gt;Can you give me a good example of a use case you have here?
&lt;br&gt;&lt;br&gt;&amp;gt; - collection behaviour of g_variant_new: &amp;quot;a&amp;quot; types are collected as
&lt;br&gt;&amp;gt; &amp;nbsp; GVariantBuilder. This seems very inconvenient to me, since one cannot
&lt;br&gt;&amp;gt; &amp;nbsp; then build the whole thing in just the one call.
&lt;br&gt;&lt;br&gt;But there are modifiers. &amp;nbsp;Arrays of strings can be converted from a strv
&lt;br&gt;with '^as'. &amp;nbsp;Arrays of constant-sized items (ie: ints, floats, and even
&lt;br&gt;structure types of these things) can be constructed using, for example,
&lt;br&gt;'&amp;ai'.
&lt;br&gt;&lt;br&gt;Do you have another method you'd prefer for array construction? &amp;nbsp;Maybe
&lt;br&gt;one that collects each array item from the varargs list? &amp;nbsp;Is that evil?
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; This appears to have been changed from earlier code; in the removed
&lt;br&gt;&amp;gt; &amp;nbsp; glib/tests/gvariant-complex.c test, it was done this way:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; variant = g_variant_new (&amp;quot;(a{si}s)&amp;quot;,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;zero&amp;quot;, 0,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;one&amp;quot;, &amp;nbsp;1,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;two&amp;quot;, &amp;nbsp;2,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; IMHO a vastly more convenient way to build an array in one step, in
&lt;br&gt;&amp;gt; &amp;nbsp; case one already knows how many elements one has and what they are.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; Could there again be a convenience method like this?
&lt;/div&gt;&lt;br&gt;mmm. &amp;nbsp;Yes. &amp;nbsp;It used to be like that, indeed. &amp;nbsp;The reason that I removed
&lt;br&gt;it was because it was not possible to have a dual of it for
&lt;br&gt;g_variant_get() and I'm trying to keep g_variant_new() as similar to
&lt;br&gt;g_variant_get() as is possible.
&lt;br&gt;&lt;br&gt;Note that you can do in-place parsing of:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;quot;( { 'zero': 0, 'one': 1, 'two': 2 }, '' )&amp;quot;
&lt;br&gt;&lt;br&gt;if you prefer.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; - space efficiency: I was trying to build a variant containing some
&lt;br&gt;&amp;gt; &amp;nbsp; data, and multiple dicts to get at the data from various keys. i.e
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;quot;a{sv}a{sv}a{sv}&amp;quot;. I though that if I constructed the data
&lt;br&gt;&amp;gt; &amp;nbsp; GVariants first, and then added these to the dicts (i.e.
&lt;br&gt;&amp;gt; &amp;nbsp; v=g_variant_new(), add (key1, v) to dict1, add (key2, v) to dict2
&lt;br&gt;&amp;gt; &amp;nbsp; etc), the resulting blob (g_variant_flatten
&lt;br&gt;&amp;gt; &amp;nbsp; + get the data out) would contain that data only once instead of once
&lt;br&gt;&amp;gt; &amp;nbsp; for each dict it was in. Well, it didn't work :-) 
&lt;br&gt;&amp;gt; &amp;nbsp; Was that a naive/dumb thing to expect, or can this be made to work? 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; I ended up doing &amp;quot;ava{su}a{su}a{su}&amp;quot;, first putting the data into
&lt;br&gt;&amp;gt; &amp;nbsp; an array, then the index of the data in the array into the dicts.
&lt;br&gt;&amp;gt; &amp;nbsp; Is that the best way for this?
&lt;/div&gt;&lt;br&gt;This is the recommended way, yes. &amp;nbsp;If you have the data appearing
&lt;br&gt;multiple times then it will appear multiple times. &amp;nbsp;There is no
&lt;br&gt;compression here.
&lt;br&gt;&lt;br&gt;&amp;gt; - almost all functions are missing Since: markers; the Since: marked in
&lt;br&gt;&amp;gt; &amp;nbsp; the G_TYPE_GVARIANT definition mistakenly says 2.14
&lt;br&gt;&lt;br&gt;Noted.
&lt;br&gt;&lt;br&gt;&amp;gt; - gvariant-*.c fail to #include &amp;quot;config.h&amp;quot;
&lt;br&gt;&lt;br&gt;What's the policy on this sort of thing? &amp;nbsp;Include everywhere or only
&lt;br&gt;include if needed?
&lt;br&gt;&lt;br&gt;&amp;gt; - g_variant_markup_parser_end_element uses lots of
&lt;br&gt;&amp;gt; &amp;nbsp; g_ascii_strto[u]ll/g_ascii_strtod but does no error- or overflow
&lt;br&gt;&amp;gt; &amp;nbsp; checks? Other things are error-checked in there, so if this is
&lt;br&gt;&amp;gt; &amp;nbsp; not-checked on purpose, a comment may be in order.
&lt;br&gt;&lt;br&gt;I'll look into that.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; - how about having a variant of g_variant_print that operates on a
&lt;br&gt;&amp;gt; &amp;nbsp; provided (buffer, len) ?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - +#ifndef GSIZE_TO_LE
&lt;br&gt;&amp;gt; &amp;nbsp; +#if GLIB_SIZEOF_SIZE_T == 4
&lt;br&gt;&amp;gt; &amp;nbsp; +# define GSIZE_TO_LE GUINT32_TO_LE
&lt;br&gt;&amp;gt; &amp;nbsp; +#else
&lt;br&gt;&amp;gt; &amp;nbsp; +# define GSIZE_TO_LE GUINT64_TO_LE
&lt;br&gt;&amp;gt; &amp;nbsp; +#endif
&lt;br&gt;&amp;gt; &amp;nbsp; +#define GSIZE_FROM_LE GSIZE_TO_LE
&lt;br&gt;&amp;gt; &amp;nbsp; +#endif
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; Shouldn't these byteswapping macros be made public like the
&lt;br&gt;&amp;gt; &amp;nbsp; existing repertoire in gtypes.h ?
&lt;/div&gt;&lt;br&gt;Matthias?
&lt;br&gt;&lt;br&gt;&amp;gt; - there should be a convenience function that takes a dictionary
&lt;br&gt;&amp;gt; &amp;nbsp; variant and turns it into a GHashTable (I was surprised that
&lt;br&gt;&amp;gt; &amp;nbsp; g_variant_lookup[_value] just iterates over the whole thing until a
&lt;br&gt;&amp;gt; &amp;nbsp; match is found)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; - the code uses literal 'X' / &amp;quot;X&amp;quot; in many places; IMHO using
&lt;br&gt;&amp;gt; &amp;nbsp; G_VARIANT_TYPE_CLASS_X / G_VARIANT_TYPE_X would make the code more
&lt;br&gt;&amp;gt; &amp;nbsp; readable / informative
&lt;br&gt;&lt;br&gt;All I can say to this is that it's easier to type this:
&lt;br&gt;&lt;br&gt;&amp;nbsp; case 'a': case 'b': case 'c': case 'd':
&lt;br&gt;&lt;br&gt;than:
&lt;br&gt;&lt;br&gt;&amp;nbsp; case G_VARIANT_TYPE_CLASS_ALPHA:
&lt;br&gt;&amp;nbsp; case G_VARIANT_TYPE_CLASS_BETA:
&lt;br&gt;&amp;nbsp; case G_VARIANT_TYPE_CLASS_GAMMA:
&lt;br&gt;&amp;nbsp; case G_VARIANT_TYPE_CLASS_DELTA:
&lt;br&gt;&lt;br&gt;&amp;gt; - g_variant_parse_full is rather unusual in that it returns an error
&lt;br&gt;&amp;gt; &amp;nbsp; not in a GError but a GVariantParseError. Could this be
&lt;br&gt;&amp;gt; &amp;nbsp; implemented instead by fixing bug 124022
&lt;br&gt;&amp;gt; &amp;nbsp; [&lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=124022&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugzilla.gnome.org/show_bug.cgi?id=124022&lt;/a&gt;] and then using
&lt;br&gt;&amp;gt; &amp;nbsp; that to put the extra data into a GError? 
&lt;br&gt;&lt;br&gt;Does this bug have any hope of being fixed any time soon?
&lt;br&gt;&lt;br&gt;I could also just eliminate the &amp;quot;fancy&amp;quot; error reporting, but I think it
&lt;br&gt;can be really helpful (see below).
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; Actually, for what is this _full variant useful at all to have as a
&lt;br&gt;&amp;gt; &amp;nbsp; public function — can't it just be private? It seems to only be used
&lt;br&gt;&amp;gt; &amp;nbsp; in g_variant_parse().
&lt;br&gt;&lt;br&gt;The GSettings schema file parser calls the _full variant to parse
&lt;br&gt;default values out of schema files. &amp;nbsp;The extra information is used to
&lt;br&gt;tie-in to the error reporting system of that parser which does
&lt;br&gt;Vala-style reporting of the lcation of errors.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ^^^^^^^
&lt;br&gt;&lt;br&gt;&amp;gt; That's it for now.
&lt;br&gt;&lt;br&gt;Thanks :)
&lt;br&gt;&lt;br&gt;Cheers
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26577584&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26577584.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26577187</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T08:08:16Z</published>
	<updated>2009-11-30T08:08:16Z</updated>
	<author>
		<name>Ryan Lortie</name>
	</author>
	<content type="html">On Mon, 2009-11-30 at 08:30 -0500, Matthias Clasen wrote:
&lt;br&gt;&amp;gt; I'd just drop that kind of thing; I did study lattice theory and know
&lt;br&gt;&amp;gt; what a bounded join-semilattice is, but I doubt this information will
&lt;br&gt;&amp;gt; help anybody to use GVariant...
&lt;br&gt;&lt;br&gt;OTOH, just this morning I woke up to:
&lt;br&gt;&lt;br&gt;&lt;br&gt;07:35 -!- Irssi: Starting query in gnome with wjt
&lt;br&gt;07:35 &amp;lt;wjt&amp;gt; &amp;gt; This function defines a bounded join-semilattice over 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GVariantType for which G_VARIANT_TYPE_ANY is top.
&lt;br&gt;07:35 &amp;lt;wjt&amp;gt; you are my hero :D
&lt;br&gt;&lt;br&gt;&lt;br&gt;:)
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26577187&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26577187.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26576892</id>
	<title>Re: GDBus API/usage questions</title>
	<published>2009-11-30T07:51:42Z</published>
	<updated>2009-11-30T07:51:42Z</updated>
	<author>
		<name>David Zeuthen</name>
	</author>
	<content type="html">Hey Travis,
&lt;br&gt;&lt;br&gt;I've been on vacation the past two weeks so my reply is a bit delayed.
&lt;br&gt;&lt;br&gt;On Wed, 2009-11-25 at 11:57 -0800, Travis Reitter wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi David,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm porting e-d-s's libebook from dbus-glib to gdbus and I've run into
&lt;br&gt;&amp;gt; a couple confusing bits of GDBus:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; * g_dbus_connection_bus_get() always seems to end in this failure:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; GLib-DBus-Standalone:ERROR:gdbusprivate.c:259:connection_setup_add_watch:
&lt;br&gt;&amp;gt; assertion failed: (dbus_watch_get_data (watch) == NULL)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is this intentional? Should there just be some simple tracking to
&lt;br&gt;&amp;gt; avoid running the setup on the same connection twice? Is it a case of
&lt;br&gt;&amp;gt; the connection being set up upon the original _get() and again when
&lt;br&gt;&amp;gt; creating a proxy for it?
&lt;/div&gt;&lt;br&gt;Nope, bus_get() just be able to be called multiple times - I think
&lt;br&gt;there's even a test-case for it.
&lt;br&gt;&lt;br&gt;&amp;gt; * I've worked around the above problem in my own code by using
&lt;br&gt;&amp;gt; g_dbus_connection_bus_get_private(), but I just bumped into this same
&lt;br&gt;&amp;gt; problem within gdbusproxywatching, just doing something similar to
&lt;br&gt;&amp;gt; example-watch-proxy.c
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; * How is service activation supposed to work with GDBus? I don't see
&lt;br&gt;&amp;gt; any way to get the DBusConnection for a given GDBusProxy or
&lt;br&gt;&amp;gt; GDBusConnection -- should I just use dbus_bus_get(), or am I missing
&lt;br&gt;&amp;gt; some convenience API?
&lt;br&gt;&lt;br&gt;There's some work remaining to be done here - see
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/archives/gtk-devel-list/2009-October/msg00075.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/archives/gtk-devel-list/2009-October/msg00075.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; * I seem to have a race between a service handling daemon exiting
&lt;br&gt;&amp;gt; (which it does a few seconds after all clients disconnect) and a
&lt;br&gt;&amp;gt; client connecting to it (and then failing when it gets a timeout
&lt;br&gt;&amp;gt; calling one of its methods). I assume I need to watch for the proxy
&lt;br&gt;&amp;gt; disappearing (as above), but, like I said, I can't seem to get that to
&lt;br&gt;&amp;gt; work
&lt;br&gt;&lt;br&gt;I need to look into that (and add tests for it) - service activation
&lt;br&gt;isn't really tested yet. And APIs like g_bus_own_name() probably needs
&lt;br&gt;to &amp;nbsp;be changed as it is inherently racey (when you register objects in
&lt;br&gt;the name_owned handler it is usually too late).
&lt;br&gt;&lt;br&gt;&amp;gt; * When I create a proxy for a D-Bus object that has neither signals
&lt;br&gt;&amp;gt; nor properties, the proxy creation fails unless I pass
&lt;br&gt;&amp;gt; (G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
&lt;br&gt;&amp;gt; G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS). Is that expected?
&lt;br&gt;&lt;br&gt;No, sounds like a bug. We should have tests for this.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Here's my branch that works (except for that race condition):
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://git.gnome.org/cgit/evolution-data-server/log/?h=treitter-client-gdbus&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://git.gnome.org/cgit/evolution-data-server/log/?h=treitter-client-gdbus&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Here's the branch where I'm trying to watch the proxy (and obviously
&lt;br&gt;&amp;gt; doesn't work; it's a direct descendant of the branch above, though I
&lt;br&gt;&amp;gt; accidentally mangled the refs, so it doesn't appear to be):
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://git.gnome.org/cgit/evolution-data-server/log/?h=treitter-client-gdbus-watch-proxy&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://git.gnome.org/cgit/evolution-data-server/log/?h=treitter-client-gdbus-watch-proxy&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Am I doing anything obviously wrong in the -watch-proxy branch?
&lt;/div&gt;&lt;br&gt;I'll look at your branches - hopefully soon depending on what else I
&lt;br&gt;need to work on in December. Thanks a lot for trying this out!
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;David
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26576892&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GDBus-API-usage-questions-tp26519310p26576892.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26574744</id>
	<title>Re: A few comments on GVariant</title>
	<published>2009-11-30T05:30:46Z</published>
	<updated>2009-11-30T05:30:46Z</updated>
	<author>
		<name>Matthias Clasen-2</name>
	</author>
	<content type="html">On Mon, Nov 30, 2009 at 7:27 AM, Christian Persch &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26574744&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;chpe@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Hi;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - g_variant_type_matches docs say: &amp;quot;This function defines a bounded
&lt;br&gt;&amp;gt;  join-semilattice over GVariantType for which G_VARIANT_TYPE_ANY is
&lt;br&gt;&amp;gt;  top.&amp;quot;
&lt;br&gt;&amp;gt;  If you do want to go into that much detail, there should be a
&lt;br&gt;&amp;gt;  more complete definition of how that ... thing ... is constructed :-)
&lt;br&gt;&lt;br&gt;I'd just drop that kind of thing; I did study lattice theory and know
&lt;br&gt;what a bounded join-semilattice is, but I doubt this information will
&lt;br&gt;help anybody to use GVariant...
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26574744&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-few-comments-on-GVariant-tp26573892p26574744.html" />
</entry>

</feed>
