<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>dbus-gthread.c Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.2.15 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>dbus-gthread.c</h1><div class="fragment"><pre>00001 <font class="comment">/* -*- mode: C; c-file-style: "gnu" -*- */</font> 00002 <font class="comment">/* dbus-gthread.c GThread integration</font> 00003 <font class="comment"> *</font> 00004 <font class="comment"> * Copyright (C) 2002 CodeFactory AB</font> 00005 <font class="comment"> *</font> 00006 <font class="comment"> * Licensed under the Academic Free License version 2.0</font> 00007 <font class="comment"> * </font> 00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify</font> 00009 <font class="comment"> * it under the terms of the GNU General Public License as published by</font> 00010 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or</font> 00011 <font class="comment"> * (at your option) any later version.</font> 00012 <font class="comment"> *</font> 00013 <font class="comment"> * This program is distributed in the hope that it will be useful,</font> 00014 <font class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font> 00016 <font class="comment"> * GNU General Public License for more details.</font> 00017 <font class="comment"> * </font> 00018 <font class="comment"> * You should have received a copy of the GNU General Public License</font> 00019 <font class="comment"> * along with this program; if not, write to the Free Software</font> 00020 <font class="comment"> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</font> 00021 <font class="comment"> *</font> 00022 <font class="comment"> */</font> 00023 00024 <font class="preprocessor">#include <glib.h></font> 00025 <font class="preprocessor">#include <dbus/dbus.h></font> 00026 <font class="preprocessor">#include "dbus-glib.h"</font> 00027 00032 <font class="keyword">static</font> DBusMutex * dbus_gmutex_new (<font class="keywordtype">void</font>); 00033 <font class="keyword">static</font> <font class="keywordtype">void</font> dbus_gmutex_free (DBusMutex *mutex); 00034 <font class="keyword">static</font> dbus_bool_t dbus_gmutex_lock (DBusMutex *mutex); 00035 <font class="keyword">static</font> dbus_bool_t dbus_gmutex_unlock (DBusMutex *mutex); 00036 00037 00038 <font class="keyword">static</font> DBusCondVar* dbus_gcondvar_new (<font class="keywordtype">void</font>); 00039 <font class="keyword">static</font> <font class="keywordtype">void</font> dbus_gcondvar_free (DBusCondVar *cond); 00040 <font class="keyword">static</font> <font class="keywordtype">void</font> dbus_gcondvar_wait (DBusCondVar *cond, 00041 DBusMutex *mutex); 00042 <font class="keyword">static</font> dbus_bool_t dbus_gcondvar_wait_timeout (DBusCondVar *cond, 00043 DBusMutex *mutex, 00044 <font class="keywordtype">int</font> timeout_msec); 00045 <font class="keyword">static</font> <font class="keywordtype">void</font> dbus_gcondvar_wake_one (DBusCondVar *cond); 00046 <font class="keyword">static</font> <font class="keywordtype">void</font> dbus_gcondvar_wake_all (DBusCondVar *cond); 00047 00048 00049 <font class="keyword">static</font> <font class="keyword">const</font> <a class="code" href="structDBusThreadFunctions.html">DBusThreadFunctions</a> functions = 00050 { 00051 DBUS_THREAD_FUNCTIONS_MUTEX_NEW_MASK | 00052 DBUS_THREAD_FUNCTIONS_MUTEX_FREE_MASK | 00053 DBUS_THREAD_FUNCTIONS_MUTEX_LOCK_MASK | 00054 DBUS_THREAD_FUNCTIONS_MUTEX_UNLOCK_MASK | 00055 DBUS_THREAD_FUNCTIONS_CONDVAR_NEW_MASK | 00056 DBUS_THREAD_FUNCTIONS_CONDVAR_FREE_MASK | 00057 DBUS_THREAD_FUNCTIONS_CONDVAR_WAIT_MASK | 00058 DBUS_THREAD_FUNCTIONS_CONDVAR_WAIT_TIMEOUT_MASK | 00059 DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ONE_MASK| 00060 DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ALL_MASK, 00061 dbus_gmutex_new, 00062 dbus_gmutex_free, 00063 dbus_gmutex_lock, 00064 dbus_gmutex_unlock, 00065 dbus_gcondvar_new, 00066 dbus_gcondvar_free, 00067 dbus_gcondvar_wait, 00068 dbus_gcondvar_wait_timeout, 00069 dbus_gcondvar_wake_one, 00070 dbus_gcondvar_wake_all 00071 }; 00072 00073 <font class="keyword">static</font> DBusMutex * 00074 dbus_gmutex_new (<font class="keywordtype">void</font>) 00075 { 00076 GMutex *mutex; 00077 00078 mutex = g_mutex_new (); 00079 00080 <font class="keywordflow">return</font> (DBusMutex *)mutex; 00081 } 00082 00083 <font class="keyword">static</font> <font class="keywordtype">void</font> 00084 dbus_gmutex_free (DBusMutex *mutex) 00085 { 00086 g_mutex_free ((GMutex *)mutex); 00087 } 00088 00089 <font class="keyword">static</font> dbus_bool_t 00090 dbus_gmutex_lock (DBusMutex *mutex) 00091 { 00092 g_mutex_lock ((GMutex *)mutex); 00093 00094 <font class="keywordflow">return</font> TRUE; 00095 } 00096 00097 <font class="keyword">static</font> dbus_bool_t 00098 dbus_gmutex_unlock (DBusMutex *mutex) 00099 { 00100 g_mutex_unlock ((GMutex *)mutex); 00101 00102 <font class="keywordflow">return</font> TRUE; 00103 } 00104 00105 <font class="keyword">static</font> DBusCondVar* 00106 dbus_gcondvar_new (<font class="keywordtype">void</font>) 00107 { 00108 <font class="keywordflow">return</font> (DBusCondVar*)g_cond_new (); 00109 } 00110 00111 <font class="keyword">static</font> <font class="keywordtype">void</font> 00112 dbus_gcondvar_free (DBusCondVar *cond) 00113 { 00114 g_cond_free ((GCond *)cond); 00115 } 00116 00117 <font class="keyword">static</font> <font class="keywordtype">void</font> 00118 dbus_gcondvar_wait (DBusCondVar *cond, 00119 DBusMutex *mutex) 00120 { 00121 g_cond_wait ((GCond *)cond, (GMutex *)mutex); 00122 } 00123 00124 <font class="keyword">static</font> dbus_bool_t 00125 dbus_gcondvar_wait_timeout (DBusCondVar *cond, 00126 DBusMutex *mutex, 00127 <font class="keywordtype">int</font> timeout_msec) 00128 { 00129 GTimeVal now; 00130 00131 g_get_current_time (&now); 00132 00133 now.tv_sec += timeout_msec / 1000; 00134 now.tv_usec += (timeout_msec % 1000) * 1000; 00135 <font class="keywordflow">if</font> (now.tv_usec > G_USEC_PER_SEC) 00136 { 00137 now.tv_sec += 1; 00138 now.tv_usec -= G_USEC_PER_SEC; 00139 } 00140 00141 <font class="keywordflow">return</font> g_cond_timed_wait ((GCond *)cond, (GMutex *)mutex, &now); 00142 } 00143 00144 <font class="keyword">static</font> <font class="keywordtype">void</font> 00145 dbus_gcondvar_wake_one (DBusCondVar *cond) 00146 { 00147 g_cond_signal ((GCond *)cond); 00148 } 00149 00150 <font class="keyword">static</font> <font class="keywordtype">void</font> 00151 dbus_gcondvar_wake_all (DBusCondVar *cond) 00152 { 00153 g_cond_broadcast ((GCond *)cond); 00154 } 00155 00167 <font class="keywordtype">void</font> <a name="l00168"></a><a class="code" href="group__DBusGLib.html#a11">00168</a> dbus_g_thread_init (<font class="keywordtype">void</font>) 00169 { 00170 <font class="keywordflow">if</font> (!g_thread_supported ()) 00171 g_error (<font class="stringliteral">"g_thread_init() must be called before dbus_threads_init()"</font>); 00172 00173 dbus_threads_init (&functions); 00174 } 00175 </pre></div><hr><address align="right"><small>Generated on Wed Jun 9 05:01:25 2004 for D-BUS by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.15 </small></address> </body> </html>