~ubuntu-branches/ubuntu/wily/freerdp/wily-proposed

« back to all changes in this revision

Viewing changes to include/freerdp/utils/thread.h

  • Committer: Package Import Robot
  • Author(s): Martin Pitt, Jeremy Bicha, Jean-Louis Dupond, Martin Pitt
  • Date: 2012-01-31 10:02:14 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20120131100214-jaok3uwvni7sqxth
Tags: 1.0.0-0git1
Upload current Debian packaging git to get this rolling for precise.

[ Jeremy Bicha ]
* New upstream release. Closes: #647498.
* Updated symbols and bumped soname
* debian/control:
  - Added new build dependencies
  - Bump Standards-Version to 3.9.2
* debian/source/format: Set to 3.0 (quilt)
* debian/rules: Turn on strict symbols checking
* debian/watch: Watch github

[ Jean-Louis Dupond ]
* debian/control: Updated homepage
* debian/copyright: Reflect upstream switch to the Apache license

[ Martin Pitt ]
* debian/libfreerdp0.symbols: Fix version number, should
  be 1.0~beta5, not 1.0-beta5.
* debian/control: Add libavcodec-dev build dependency, upstream build system
  checks for that. Thanks Jean-Louis Dupond!

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * FreeRDP: A Remote Desktop Protocol client.
 
3
 * Thread Utils
 
4
 *
 
5
 * Copyright 2011 Vic Lee
 
6
 *
 
7
 * Licensed under the Apache License, Version 2.0 (the "License");
 
8
 * you may not use this file except in compliance with the License.
 
9
 * You may obtain a copy of the License at
 
10
 *
 
11
 *     http://www.apache.org/licenses/LICENSE-2.0
 
12
 *
 
13
 * Unless required by applicable law or agreed to in writing, software
 
14
 * distributed under the License is distributed on an "AS IS" BASIS,
 
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
16
 * See the License for the specific language governing permissions and
 
17
 * limitations under the License.
 
18
 */
 
19
 
 
20
#ifndef __THREAD_UTILS_H
 
21
#define __THREAD_UTILS_H
 
22
 
 
23
#include <freerdp/api.h>
 
24
#include <freerdp/types.h>
 
25
#include <freerdp/utils/mutex.h>
 
26
#include <freerdp/utils/wait_obj.h>
 
27
#ifndef _WIN32
 
28
#include <pthread.h>
 
29
#endif
 
30
 
 
31
typedef struct _freerdp_thread freerdp_thread;
 
32
 
 
33
struct _freerdp_thread
 
34
{
 
35
        freerdp_mutex* mutex;
 
36
 
 
37
        struct wait_obj* signals[5];
 
38
        int num_signals;
 
39
 
 
40
        int status;
 
41
};
 
42
 
 
43
FREERDP_API freerdp_thread* freerdp_thread_new(void);
 
44
FREERDP_API void freerdp_thread_start(freerdp_thread* thread, void* func, void* arg);
 
45
FREERDP_API void freerdp_thread_stop(freerdp_thread* thread);
 
46
FREERDP_API void freerdp_thread_free(freerdp_thread* thread);
 
47
 
 
48
#define freerdp_thread_wait(_t) wait_obj_select(_t->signals, _t->num_signals, -1)
 
49
#define freerdp_thread_wait_timeout(_t, _timeout) wait_obj_select(_t->signals, _t->num_signals, _timeout)
 
50
#define freerdp_thread_is_stopped(_t) wait_obj_is_set(_t->signals[0])
 
51
#define freerdp_thread_is_running(_t) (_t->status == 1)
 
52
#define freerdp_thread_quit(_t) do { \
 
53
        _t->status = -1; \
 
54
        wait_obj_clear(_t->signals[0]); } while (0)
 
55
#define freerdp_thread_signal(_t) wait_obj_set(_t->signals[1])
 
56
#define freerdp_thread_reset(_t) wait_obj_clear(_t->signals[1])
 
57
#define freerdp_thread_lock(_t) freerdp_mutex_lock(_t->mutex)
 
58
#define freerdp_thread_unlock(_t) freerdp_mutex_unlock(_t->mutex)
 
59
 
 
60
#endif /* __THREAD_UTILS_H */