Subversion Repositories Kolibri OS

Rev

Rev 5372 | Rev 6106 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4438 Serge 1
 
2
#include 
3
#include 
4
#include 
5
#include 
6
#include 
7
#include "winlib/winlib.h"
5021 Serge 8
#include "fplay.h"
4438 Serge 9
10
 
11
12
 
5603 serge 13
#define FUTEX_INIT      0
14
#define FUTEX_DESTROY   1
15
#define FUTEX_WAIT      2
16
#define FUTEX_WAKE      3
17
18
 
19
{
4438 Serge 20
    unsigned int handle;
5603 serge 21
4438 Serge 22
 
5603 serge 23
4438 Serge 24
 
5603 serge 25
    "int $0x40\t"
26
    :"=a"(handle)
27
    :"a"(77),"b"(FUTEX_INIT),"c"(mutex));
28
    mutex->handle = handle;
29
30
 
31
};
32
33
 
34
{
35
    int retval;
36
37
 
38
    "int $0x40\t"
39
    :"=a"(retval)
40
    :"a"(77),"b"(FUTEX_DESTROY),"c"(mutex->handle));
41
42
 
43
};
44
45
 
46
  __atomic_exchange_4((ptr), (new), __ATOMIC_ACQUIRE)
47
48
 
49
  __atomic_exchange_4((ptr), (new), __ATOMIC_RELEASE)
50
51
 
52
{
53
    int tmp;
54
55
 
56
        return;
57
58
 
59
    {
60
        asm volatile(
61
        "int $0x40\t"
62
        :"=a"(tmp)
63
        :"a"(77),"b"(FUTEX_WAIT),
64
        "c"(mutex->handle),"d"(2),"S"(0));
65
   }
66
}
4438 Serge 67
68
 
5603 serge 69
{
70
  int zero = 0;
71
4438 Serge 72
 
5603 serge 73
}
74
75
 
76
{
77
    int prev;
78
79
 
80
81
 
82
    {
83
        asm volatile(
84
        "int $0x40\t"
85
        :"=a"(prev)
86
        :"a"(77),"b"(FUTEX_WAKE),
87
        "c"(mutex->handle),"d"(1));
88
    };
89
};
90
#endif
91
92
 
4438 Serge 93
{
94
    int off = offset;
95
    return lseek(fd, off, origin);
96
}
97
98
 
99
{
100
    AVPacketList *q_pkt;
101
102
 
103
//    if (av_dup_packet(pkt) < 0)
104
//        return -1;
105
106
 
107
    if (!q_pkt)
108
        return -1;
109
110
 
111
    q_pkt->next = NULL;
112
113
 
114
115
 
116
        q->first_pkt = q_pkt;
117
    else
118
        q->last_pkt->next = q_pkt;
119
120
 
121
    q->size += q_pkt->pkt.size + sizeof(*q_pkt);
122
    q->count++;
123
124
 
125
126
 
127
}
128
129
 
130
{
131
    AVPacketList *q_pkt;
132
    int ret = 0;
133
134
 
135
136
 
137
    if (q_pkt)
138
    {
139
        q->first_pkt = q_pkt->next;
140
        if (!q->first_pkt)
141
            q->last_pkt = NULL;
142
143
 
144
        q->size -= q_pkt->pkt.size + sizeof(*q_pkt);
145
        *pkt = q_pkt->pkt;
146
        av_free(q_pkt);
147
        ret = 1;
148
    };
149
150
 
151
152
 
153
}
154
155
 
156
{
157
    int *dst;
5372 serge 158
    int *src = raw;
4438 Serge 159
    int i, j;
160
161
 
5372 serge 162
    dst+=  y * ctx->pixmap_pitch/4 + x;
163
4438 Serge 164
 
165
    {
166
        for(j = 0; j < w; j++)
167
            dst[j] = src[j];
168
        dst+= ctx->pixmap_pitch/4;
5372 serge 169
        src+= pitch/4;
4438 Serge 170
    };
171
};
172