New upstream version 3.24.14
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
<link rel="up" href="reference.html" title="API Reference">
|
||||
<link rel="prev" href="gdk3-Properties-and-Atoms.html" title="Properties and Atoms">
|
||||
<link rel="next" href="gdk3-Pango-Interaction.html" title="Pango Interaction">
|
||||
<meta name="generator" content="GTK-Doc V1.29 (XML mode)">
|
||||
<meta name="generator" content="GTK-Doc V1.32.1 (XML mode)">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
@ -35,8 +35,8 @@
|
||||
<a name="gdk3-Threads.functions"></a><h2>Functions</h2>
|
||||
<div class="informaltable"><table class="informaltable" width="100%" border="0">
|
||||
<colgroup>
|
||||
<col width="150px" class="functions_return">
|
||||
<col class="functions_name">
|
||||
<col width="150px" class="functions_proto_type">
|
||||
<col class="functions_proto_name">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
@ -144,7 +144,7 @@ locked), but individual data structure instances are not automatically
|
||||
locked for performance reasons. So e.g. you must coordinate
|
||||
accesses to the same <span class="type">GHashTable</span> from multiple threads.</p>
|
||||
<p>GTK+, however, is not thread safe. You should only use GTK+ and GDK
|
||||
from the thread <code class="function">gtk_init()</code> and <code class="function">gtk_main()</code> were called on.
|
||||
from the thread <a href="https://developer.gnome.org/gtk4/gtk4-General.html#gtk-init"><code class="function">gtk_init()</code></a> and <a href="https://developer.gnome.org/gtk4/gtk4-General.html#gtk-main"><code class="function">gtk_main()</code></a> were called on.
|
||||
This is usually referred to as the “main thread”.</p>
|
||||
<p>Signals on GTK+ and GDK types, as well as non-signal callbacks, are
|
||||
emitted in the main thread.</p>
|
||||
@ -173,25 +173,25 @@ by using <a class="link" href="gdk3-Threads.html#gdk-threads-add-idle" title="gd
|
||||
17
|
||||
18
|
||||
19</pre></td>
|
||||
<td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
|
||||
<span class="function">worker_thread</span><span class="normal"> </span><span class="symbol">(</span><span class="type">void</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="usertype">ExpensiveData</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">expensive_data </span><span class="symbol">=</span><span class="normal"> </span><span class="function">do_expensive_computation</span><span class="normal"> </span><span class="symbol">();</span>
|
||||
<td class="listing_code"><pre class="programlisting"><span class="k">static</span> <span class="kt">void</span>
|
||||
<span class="nf">worker_thread</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">ExpensiveData</span> <span class="o">*</span><span class="n">expensive_data</span> <span class="o">=</span> <span class="n">do_expensive_computation</span> <span class="p">();</span>
|
||||
|
||||
<span class="normal"> </span><span class="function"><a href="gdk3-Threads.html#gdk-threads-add-idle">gdk_threads_add_idle</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">got_value</span><span class="symbol">,</span><span class="normal"> expensive_data</span><span class="symbol">);</span>
|
||||
<span class="cbracket">}</span>
|
||||
<span class="n">gdk_threads_add_idle</span> <span class="p">(</span><span class="n">got_value</span><span class="p">,</span> <span class="n">expensive_data</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="keyword">static</span><span class="normal"> gboolean</span>
|
||||
<span class="function">got_value</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="usertype">ExpensiveData</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">expensive_data </span><span class="symbol">=</span><span class="normal"> user_data</span><span class="symbol">;</span>
|
||||
<span class="k">static</span> <span class="n">gboolean</span>
|
||||
<span class="nf">got_value</span> <span class="p">(</span><span class="n">gpointer</span> <span class="n">user_data</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">ExpensiveData</span> <span class="o">*</span><span class="n">expensive_data</span> <span class="o">=</span> <span class="n">user_data</span><span class="p">;</span>
|
||||
|
||||
<span class="normal"> my_app</span><span class="symbol">-></span><span class="normal">expensive_data </span><span class="symbol">=</span><span class="normal"> expensive_data</span><span class="symbol">;</span>
|
||||
<span class="normal"> </span><span class="function">gtk_button_set_sensitive</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">my_app</span><span class="symbol">-></span><span class="normal">button</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span><span class="function">gtk_button_set_label</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">my_app</span><span class="symbol">-></span><span class="normal">button</span><span class="symbol">,</span><span class="normal"> expensive_data</span><span class="symbol">-></span><span class="normal">result_label</span><span class="symbol">);</span>
|
||||
<span class="n">my_app</span><span class="o">-></span><span class="n">expensive_data</span> <span class="o">=</span> <span class="n">expensive_data</span><span class="p">;</span>
|
||||
<span class="n">gtk_button_set_sensitive</span> <span class="p">(</span><span class="n">my_app</span><span class="o">-></span><span class="n">button</span><span class="p">,</span> <span class="n">TRUE</span><span class="p">);</span>
|
||||
<span class="n">gtk_button_set_label</span> <span class="p">(</span><span class="n">my_app</span><span class="o">-></span><span class="n">button</span><span class="p">,</span> <span class="n">expensive_data</span><span class="o">-></span><span class="n">result_label</span><span class="p">);</span>
|
||||
|
||||
<span class="normal"> </span><span class="keyword">return</span><span class="normal"> G_SOURCE_REMOVE</span><span class="symbol">;</span>
|
||||
<span class="cbracket">}</span></pre></td>
|
||||
<span class="k">return</span> <span class="n">G_SOURCE_REMOVE</span><span class="p">;</span>
|
||||
<span class="p">}</span></pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -252,7 +252,7 @@ gdk_threads_init (<em class="parameter"><code><span class="type">void</span></co
|
||||
<p>Initializes GDK so that it can be used from multiple threads
|
||||
in conjunction with <a class="link" href="gdk3-Threads.html#gdk-threads-enter" title="gdk_threads_enter ()"><code class="function">gdk_threads_enter()</code></a> and <a class="link" href="gdk3-Threads.html#gdk-threads-leave" title="gdk_threads_leave ()"><code class="function">gdk_threads_leave()</code></a>.</p>
|
||||
<p>This call must be made before any use of the main loop from
|
||||
GTK+; to be safe, call it before <code class="function">gtk_init()</code>.</p>
|
||||
GTK+; to be safe, call it before <a href="https://developer.gnome.org/gtk4/gtk4-General.html#gtk-init"><code class="function">gtk_init()</code></a>.</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
@ -426,35 +426,35 @@ in thread B:</p>
|
||||
27
|
||||
28
|
||||
29</pre></td>
|
||||
<td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> gboolean</span>
|
||||
<span class="function">idle_callback</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">gpointer</span><span class="normal"> data</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="comment">// gdk_threads_enter(); would be needed for g_idle_add()</span>
|
||||
<td class="listing_code"><pre class="programlisting"><span class="k">static</span> <span class="n">gboolean</span>
|
||||
<span class="nf">idle_callback</span> <span class="p">(</span><span class="n">gpointer</span> <span class="n">data</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="c1">// gdk_threads_enter(); would be needed for g_idle_add()</span>
|
||||
|
||||
<span class="normal"> </span><span class="usertype">SomeWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">self </span><span class="symbol">=</span><span class="normal"> data</span><span class="symbol">;</span>
|
||||
<span class="normal"> </span><span class="comment">// do stuff with self</span>
|
||||
<span class="n">SomeWidget</span> <span class="o">*</span><span class="n">self</span> <span class="o">=</span> <span class="n">data</span><span class="p">;</span>
|
||||
<span class="c1">// do stuff with self</span>
|
||||
|
||||
<span class="normal"> self</span><span class="symbol">-></span><span class="normal">idle_id </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
|
||||
<span class="n">self</span><span class="o">-></span><span class="n">idle_id</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
||||
|
||||
<span class="normal"> </span><span class="comment">// gdk_threads_leave(); would be needed for g_idle_add()</span>
|
||||
<span class="normal"> </span><span class="keyword">return</span><span class="normal"> FALSE</span><span class="symbol">;</span>
|
||||
<span class="cbracket">}</span>
|
||||
<span class="c1">// gdk_threads_leave(); would be needed for g_idle_add()</span>
|
||||
<span class="k">return</span> <span class="n">FALSE</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
|
||||
<span class="function">some_widget_do_stuff_later</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">SomeWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">self</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> self</span><span class="symbol">-></span><span class="normal">idle_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gdk3-Threads.html#gdk-threads-add-idle">gdk_threads_add_idle</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">idle_callback</span><span class="symbol">,</span><span class="normal"> self</span><span class="symbol">)</span>
|
||||
<span class="normal"> </span><span class="comment">// using g_idle_add() here would require thread protection in the callback</span>
|
||||
<span class="cbracket">}</span>
|
||||
<span class="k">static</span> <span class="kt">void</span>
|
||||
<span class="nf">some_widget_do_stuff_later</span> <span class="p">(</span><span class="n">SomeWidget</span> <span class="o">*</span><span class="n">self</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">self</span><span class="o">-></span><span class="n">idle_id</span> <span class="o">=</span> <span class="n">gdk_threads_add_idle</span> <span class="p">(</span><span class="n">idle_callback</span><span class="p">,</span> <span class="n">self</span><span class="p">)</span>
|
||||
<span class="c1">// using g_idle_add() here would require thread protection in the callback</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
|
||||
<span class="function">some_widget_finalize</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="usertype">SomeWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">self </span><span class="symbol">=</span><span class="normal"> </span><span class="function">SOME_WIDGET</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">-></span><span class="normal">idle_id</span><span class="symbol">)</span>
|
||||
<span class="normal"> </span><span class="function">g_source_remove</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">-></span><span class="normal">idle_id</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span><span class="function">G_OBJECT_CLASS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parent_class</span><span class="symbol">)-></span><span class="function">finalize</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object</span><span class="symbol">);</span>
|
||||
<span class="cbracket">}</span></pre></td>
|
||||
<span class="k">static</span> <span class="kt">void</span>
|
||||
<span class="nf">some_widget_finalize</span> <span class="p">(</span><span class="n">GObject</span> <span class="o">*</span><span class="n">object</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">SomeWidget</span> <span class="o">*</span><span class="n">self</span> <span class="o">=</span> <span class="n">SOME_WIDGET</span> <span class="p">(</span><span class="n">object</span><span class="p">);</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">self</span><span class="o">-></span><span class="n">idle_id</span><span class="p">)</span>
|
||||
<span class="n">g_source_remove</span> <span class="p">(</span><span class="n">self</span><span class="o">-></span><span class="n">idle_id</span><span class="p">);</span>
|
||||
<span class="n">G_OBJECT_CLASS</span> <span class="p">(</span><span class="n">parent_class</span><span class="p">)</span><span class="o">-></span><span class="n">finalize</span> <span class="p">(</span><span class="n">object</span><span class="p">);</span>
|
||||
<span class="p">}</span></pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -601,31 +601,31 @@ for GTK+ widgets for the following use case:</p>
|
||||
23
|
||||
24
|
||||
25</pre></td>
|
||||
<td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> </span><span class="function">timeout_callback</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">gpointer</span><span class="normal"> data</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="usertype">SomeWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">self </span><span class="symbol">=</span><span class="normal"> data</span><span class="symbol">;</span>
|
||||
<span class="normal"> </span>
|
||||
<span class="normal"> </span><span class="comment">// do stuff with self</span>
|
||||
<span class="normal"> </span>
|
||||
<span class="normal"> self</span><span class="symbol">-></span><span class="normal">timeout_id </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
|
||||
<span class="normal"> </span>
|
||||
<span class="normal"> </span><span class="keyword">return</span><span class="normal"> G_SOURCE_REMOVE</span><span class="symbol">;</span>
|
||||
<span class="cbracket">}</span>
|
||||
<span class="normal"> </span>
|
||||
<span class="keyword">static</span><span class="normal"> </span><span class="type">void</span><span class="normal"> </span><span class="function">some_widget_do_stuff_later</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">SomeWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">self</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> self</span><span class="symbol">-></span><span class="normal">timeout_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function">g_timeout_add</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">timeout_callback</span><span class="symbol">,</span><span class="normal"> self</span><span class="symbol">)</span>
|
||||
<span class="cbracket">}</span>
|
||||
<span class="normal"> </span>
|
||||
<span class="keyword">static</span><span class="normal"> </span><span class="type">void</span><span class="normal"> </span><span class="function">some_widget_finalize</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object</span><span class="symbol">)</span>
|
||||
<span class="cbracket">{</span>
|
||||
<span class="normal"> </span><span class="usertype">SomeWidget</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">self </span><span class="symbol">=</span><span class="normal"> </span><span class="function">SOME_WIDGET</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span>
|
||||
<span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">-></span><span class="normal">timeout_id</span><span class="symbol">)</span>
|
||||
<span class="normal"> </span><span class="function">g_source_remove</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">-></span><span class="normal">timeout_id</span><span class="symbol">);</span>
|
||||
<span class="normal"> </span>
|
||||
<span class="normal"> </span><span class="function">G_OBJECT_CLASS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parent_class</span><span class="symbol">)-></span><span class="function">finalize</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object</span><span class="symbol">);</span>
|
||||
<span class="cbracket">}</span></pre></td>
|
||||
<td class="listing_code"><pre class="programlisting"><span class="k">static</span> <span class="n">gboolean</span> <span class="nf">timeout_callback</span> <span class="p">(</span><span class="n">gpointer</span> <span class="n">data</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">SomeWidget</span> <span class="o">*</span><span class="n">self</span> <span class="o">=</span> <span class="n">data</span><span class="p">;</span>
|
||||
|
||||
<span class="c1">// do stuff with self</span>
|
||||
|
||||
<span class="n">self</span><span class="o">-></span><span class="n">timeout_id</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">G_SOURCE_REMOVE</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">static</span> <span class="kt">void</span> <span class="nf">some_widget_do_stuff_later</span> <span class="p">(</span><span class="n">SomeWidget</span> <span class="o">*</span><span class="n">self</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">self</span><span class="o">-></span><span class="n">timeout_id</span> <span class="o">=</span> <span class="n">g_timeout_add</span> <span class="p">(</span><span class="n">timeout_callback</span><span class="p">,</span> <span class="n">self</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">static</span> <span class="kt">void</span> <span class="nf">some_widget_finalize</span> <span class="p">(</span><span class="n">GObject</span> <span class="o">*</span><span class="n">object</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">SomeWidget</span> <span class="o">*</span><span class="n">self</span> <span class="o">=</span> <span class="n">SOME_WIDGET</span> <span class="p">(</span><span class="n">object</span><span class="p">);</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">self</span><span class="o">-></span><span class="n">timeout_id</span><span class="p">)</span>
|
||||
<span class="n">g_source_remove</span> <span class="p">(</span><span class="n">self</span><span class="o">-></span><span class="n">timeout_id</span><span class="p">);</span>
|
||||
|
||||
<span class="n">G_OBJECT_CLASS</span> <span class="p">(</span><span class="n">parent_class</span><span class="p">)</span><span class="o">-></span><span class="n">finalize</span> <span class="p">(</span><span class="n">object</span><span class="p">);</span>
|
||||
<span class="p">}</span></pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -783,11 +783,8 @@ range between <span class="type">G_PRIORITY_DEFAULT_IDLE</span> and <span class=
|
||||
<p class="since">Since: 2.14</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="refsect1">
|
||||
<a name="gdk3-Threads.other_details"></a><h2>Types and Values</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<hr>Generated by GTK-Doc V1.29</div>
|
||||
<hr>Generated by GTK-Doc V1.32.1</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user