Mercurial > mplayer.hg
annotate loader/win32.c @ 13667:c87c407f4922
Applications menu entry now handled through the top-level Makefile.
author | diego |
---|---|
date | Mon, 18 Oct 2004 09:20:32 +0000 |
parents | 7a626d236929 |
children | 09b6ce70be8e |
rev | line source |
---|---|
1 | 1 /*********************************************************** |
2 | |
3465 | 3 Win32 emulation code. Functions that emulate |
4 responses from corresponding Win32 API calls. | |
5 Since we are not going to be able to load | |
6 virtually any DLL, we can only implement this | |
7 much, adding needed functions with each new codec. | |
8 | |
9 Basic principle of implementation: it's not good | |
10 for DLL to know too much about its environment. | |
1 | 11 |
12 ************************************************************/ | |
13 | |
2069 | 14 #include "config.h" |
1 | 15 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
16 #ifdef MPLAYER |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
17 #ifdef USE_QTX_CODECS |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
18 #define QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
19 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
20 #define REALPLAYER |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
21 //#define LOADLIB_TRY_NATIVE |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
22 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
23 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
24 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
25 #define PSEUDO_SCREEN_WIDTH /*640*/800 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
26 #define PSEUDO_SCREEN_HEIGHT /*480*/600 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
27 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
28 |
2069 | 29 #include "wine/winbase.h" |
30 #include "wine/winreg.h" | |
31 #include "wine/winnt.h" | |
32 #include "wine/winerror.h" | |
33 #include "wine/debugtools.h" | |
34 #include "wine/module.h" | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
35 #include "wine/winuser.h" |
2139 | 36 |
37 #include <stdio.h> | |
1 | 38 #include "win32.h" |
2069 | 39 |
2139 | 40 #include "registry.h" |
41 #include "loader.h" | |
42 #include "com.h" | |
8451 | 43 #include "ext.h" |
2139 | 44 |
2069 | 45 #include <stdlib.h> |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
46 #include <assert.h> |
2139 | 47 #include <stdarg.h> |
2069 | 48 #include <ctype.h> |
1 | 49 #include <pthread.h> |
128 | 50 #include <errno.h> |
1 | 51 #ifdef HAVE_MALLOC_H |
52 #include <malloc.h> | |
53 #endif | |
54 #include <time.h> | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
55 #include <math.h> |
128 | 56 #include <unistd.h> |
57 #include <fcntl.h> | |
1 | 58 #include <sys/types.h> |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
59 #include <dirent.h> |
1 | 60 #include <sys/time.h> |
61 #include <sys/timeb.h> | |
2069 | 62 #ifdef HAVE_KSTAT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
63 #include <kstat.h> |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
64 #endif |
1 | 65 |
2906
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
66 #if HAVE_VSSCANF |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
67 int vsscanf( const char *str, const char *format, va_list ap); |
2906
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
68 #else |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
69 /* system has no vsscanf. try to provide one */ |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
70 static int vsscanf( const char *str, const char *format, va_list ap) |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
71 { |
3465 | 72 long p1 = va_arg(ap, long); |
73 long p2 = va_arg(ap, long); | |
74 long p3 = va_arg(ap, long); | |
75 long p4 = va_arg(ap, long); | |
76 long p5 = va_arg(ap, long); | |
77 return sscanf(str, format, p1, p2, p3, p4, p5); | |
2906
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
78 } |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
79 #endif |
1416 | 80 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
81 char* def_path = WIN32_PATH; |
128 | 82 |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
83 static void do_cpuid(unsigned int ax, unsigned int *regs) |
128 | 84 { |
3465 | 85 __asm__ __volatile__ |
86 ( | |
87 "pushl %%ebx; pushl %%ecx; pushl %%edx;" | |
88 ".byte 0x0f, 0xa2;" | |
89 "movl %%eax, (%2);" | |
90 "movl %%ebx, 4(%2);" | |
91 "movl %%ecx, 8(%2);" | |
92 "movl %%edx, 12(%2);" | |
93 "popl %%edx; popl %%ecx; popl %%ebx;" | |
94 : "=a" (ax) | |
95 : "0" (ax), "S" (regs) | |
2069 | 96 ); |
128 | 97 } |
98 static unsigned int c_localcount_tsc() | |
1 | 99 { |
100 int a; | |
3465 | 101 __asm__ __volatile__ |
102 ( | |
103 "rdtsc\n\t" | |
104 :"=a"(a) | |
105 : | |
106 :"edx" | |
107 ); | |
1 | 108 return a; |
109 } | |
128 | 110 static void c_longcount_tsc(long long* z) |
1 | 111 { |
3465 | 112 __asm__ __volatile__ |
113 ( | |
114 "pushl %%ebx\n\t" | |
115 "movl %%eax, %%ebx\n\t" | |
116 "rdtsc\n\t" | |
117 "movl %%eax, 0(%%ebx)\n\t" | |
118 "movl %%edx, 4(%%ebx)\n\t" | |
119 "popl %%ebx\n\t" | |
120 ::"a"(z) | |
121 ); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
122 } |
128 | 123 static unsigned int c_localcount_notsc() |
1 | 124 { |
125 struct timeval tv; | |
126 unsigned limit=~0; | |
127 limit/=1000000; | |
128 gettimeofday(&tv, 0); | |
129 return limit*tv.tv_usec; | |
130 } | |
128 | 131 static void c_longcount_notsc(long long* z) |
1 | 132 { |
133 struct timeval tv; | |
134 unsigned long long result; | |
135 unsigned limit=~0; | |
136 if(!z)return; | |
137 limit/=1000000; | |
138 gettimeofday(&tv, 0); | |
139 result=tv.tv_sec; | |
140 result<<=32; | |
141 result+=limit*tv.tv_usec; | |
142 *z=result; | |
143 } | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
144 static unsigned int localcount_stub(void); |
2069 | 145 static void longcount_stub(long long*); |
128 | 146 static unsigned int (*localcount)()=localcount_stub; |
147 static void (*longcount)(long long*)=longcount_stub; | |
1 | 148 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
149 static pthread_mutex_t memmut; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
150 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
151 static unsigned int localcount_stub(void) |
128 | 152 { |
153 unsigned int regs[4]; | |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
154 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
155 if ((regs[3] & 0x00000010) != 0) |
128 | 156 { |
157 localcount=c_localcount_tsc; | |
158 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
159 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
160 else |
128 | 161 { |
3465 | 162 localcount=c_localcount_notsc; |
128 | 163 longcount=c_longcount_notsc; |
164 } | |
165 return localcount(); | |
166 } | |
167 static void longcount_stub(long long* z) | |
1 | 168 { |
128 | 169 unsigned int regs[4]; |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
170 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
171 if ((regs[3] & 0x00000010) != 0) |
128 | 172 { |
173 localcount=c_localcount_tsc; | |
174 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
175 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
176 else |
128 | 177 { |
3465 | 178 localcount=c_localcount_notsc; |
128 | 179 longcount=c_longcount_notsc; |
180 } | |
181 longcount(z); | |
182 } | |
2780 | 183 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
184 #ifdef MPLAYER |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
185 #include "../mp_msg.h" |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
186 #endif |
2069 | 187 int LOADER_DEBUG=1; // active only if compiled with -DDETAILED_OUT |
3128 | 188 //#define DETAILED_OUT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
189 static inline void dbgprintf(char* fmt, ...) |
128 | 190 { |
235 | 191 #ifdef DETAILED_OUT |
128 | 192 if(LOADER_DEBUG) |
193 { | |
194 FILE* f; | |
195 va_list va; | |
3465 | 196 va_start(va, fmt); |
128 | 197 f=fopen("./log", "a"); |
3134 | 198 vprintf(fmt, va); |
3465 | 199 fflush(stdout); |
200 if(f) | |
128 | 201 { |
202 vfprintf(f, fmt, va); | |
203 fsync(fileno(f)); | |
3465 | 204 fclose(f); |
128 | 205 } |
206 va_end(va); | |
207 } | |
235 | 208 #endif |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
209 #ifdef MPLAYER |
5740 | 210 if (verbose > 2) |
211 { | |
212 va_list va; | |
213 | |
214 va_start(va, fmt); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
215 vprintf(fmt, va); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
216 // mp_dbg(MSGT_WIN32, MSGL_DBG3, fmt, va); |
5740 | 217 va_end(va); |
218 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
219 fflush(stdout); |
3435 | 220 #endif |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
221 } |
3128 | 222 |
223 | |
3465 | 224 char export_names[300][32]={ |
225 "name1", | |
226 //"name2", | |
227 //"name3" | |
1 | 228 }; |
229 //#define min(x,y) ((x)<(y)?(x):(y)) | |
230 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
231 void destroy_event(void* event); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
232 |
3134 | 233 struct th_list_t; |
234 typedef struct th_list_t{ | |
235 int id; | |
236 void* thread; | |
237 struct th_list_t* next; | |
238 struct th_list_t* prev; | |
239 } th_list; | |
240 | |
241 | |
242 // have to be cleared by GARBAGE COLLECTOR | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
243 static unsigned char* heap=NULL; |
1 | 244 static int heap_counter=0; |
3134 | 245 static tls_t* g_tls=NULL; |
246 static th_list* list=NULL; | |
247 | |
2069 | 248 static void test_heap(void) |
1 | 249 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
250 int offset=0; |
1 | 251 if(heap==0) |
252 return; | |
253 while(offset<heap_counter) | |
254 { | |
255 if(*(int*)(heap+offset)!=0x433476) | |
256 { | |
257 printf("Heap corruption at address %d\n", offset); | |
258 return; | |
259 } | |
260 offset+=8+*(int*)(heap+offset+4); | |
261 } | |
262 for(;offset<min(offset+1000, 20000000); offset++) | |
263 if(heap[offset]!=0xCC) | |
3465 | 264 { |
265 printf("Free heap corruption at address %d\n", offset); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
266 } |
1 | 267 } |
268 #undef MEMORY_DEBUG | |
269 | |
270 #ifdef MEMORY_DEBUG | |
271 | |
7386 | 272 static void* my_mreq(int size, int to_zero) |
1 | 273 { |
274 static int test=0; | |
275 test++; | |
276 if(test%10==0)printf("Memory: %d bytes allocated\n", heap_counter); | |
3465 | 277 // test_heap(); |
1 | 278 if(heap==NULL) |
279 { | |
280 heap=malloc(20000000); | |
281 memset(heap, 0xCC,20000000); | |
282 } | |
283 if(heap==0) | |
284 { | |
285 printf("No enough memory\n"); | |
286 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
287 } |
1 | 288 if(heap_counter+size>20000000) |
289 { | |
290 printf("No enough memory\n"); | |
291 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
292 } |
1 | 293 *(int*)(heap+heap_counter)=0x433476; |
294 heap_counter+=4; | |
295 *(int*)(heap+heap_counter)=size; | |
296 heap_counter+=4; | |
297 printf("Allocated %d bytes of memory: sys %d, user %d-%d\n", size, heap_counter-8, heap_counter, heap_counter+size); | |
298 if(to_zero) | |
3465 | 299 memset(heap+heap_counter, 0, size); |
1543 | 300 else |
2139 | 301 memset(heap+heap_counter, 0xcc, size); // make crash reproducable |
1 | 302 heap_counter+=size; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
303 return heap+heap_counter-size; |
1 | 304 } |
7386 | 305 static int my_release(char* memory) |
1 | 306 { |
3465 | 307 // test_heap(); |
1 | 308 if(memory==NULL) |
309 { | |
310 printf("ERROR: free(0)\n"); | |
311 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
312 } |
1 | 313 if(*(int*)(memory-8)!=0x433476) |
314 { | |
315 printf("MEMORY CORRUPTION !!!!!!!!!!!!!!!!!!!\n"); | |
316 return 0; | |
317 } | |
318 printf("Freed %d bytes of memory\n", *(int*)(memory-4)); | |
3465 | 319 // memset(memory-8, *(int*)(memory-4), 0xCC); |
1 | 320 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
321 } |
1 | 322 |
323 #else | |
128 | 324 #define GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
325 typedef struct alloc_header_t alloc_header; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
326 struct alloc_header_t |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
327 { |
3465 | 328 // let's keep allocated data 16 byte aligned |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
329 alloc_header* prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
330 alloc_header* next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
331 long deadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
332 long size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
333 long type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
334 long reserved1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
335 long reserved2; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
336 long reserved3; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
337 }; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
338 |
128 | 339 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
340 static alloc_header* last_alloc = NULL; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
341 static int alccnt = 0; |
128 | 342 #endif |
343 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
344 #define AREATYPE_CLIENT 0 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
345 #define AREATYPE_EVENT 1 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
346 #define AREATYPE_MUTEX 2 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
347 #define AREATYPE_COND 3 |
3134 | 348 #define AREATYPE_CRITSECT 4 |
349 | |
350 /* -- critical sections -- */ | |
351 struct CRITSECT | |
352 { | |
353 pthread_t id; | |
354 pthread_mutex_t mutex; | |
355 int locked; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
356 long deadbeef; |
3134 | 357 }; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
358 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
359 void* mreq_private(int size, int to_zero, int type); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
360 void* mreq_private(int size, int to_zero, int type) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
361 { |
3465 | 362 int nsize = size + sizeof(alloc_header); |
7386 | 363 alloc_header* header = (alloc_header* ) malloc(nsize); |
3465 | 364 if (!header) |
365 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
366 if (to_zero) |
3465 | 367 memset(header, 0, nsize); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
368 #ifdef GARBAGE |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
369 if (!last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
370 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
371 pthread_mutex_init(&memmut, NULL); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
372 pthread_mutex_lock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
373 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
374 else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
375 { |
3465 | 376 pthread_mutex_lock(&memmut); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
377 last_alloc->next = header; /* set next */ |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
378 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
379 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
380 header->prev = last_alloc; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
381 header->next = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
382 last_alloc = header; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
383 alccnt++; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
384 pthread_mutex_unlock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
385 #endif |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
386 header->deadbeef = 0xdeadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
387 header->size = size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
388 header->type = type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
389 |
3128 | 390 //if (alccnt < 40000) printf("MY_REQ: %p\t%d t:%d (cnt:%d)\n", header, size, type, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
391 return header + 1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
392 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
393 |
7386 | 394 static int my_release(void* memory) |
1 | 395 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
396 alloc_header* header = (alloc_header*) memory - 1; |
128 | 397 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
398 alloc_header* prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
399 alloc_header* nextmem; |
3134 | 400 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
401 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
402 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
403 |
7386 | 404 if (header->deadbeef != (long) 0xdeadbeef) |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
405 { |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
406 dbgprintf("FATAL releasing corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
407 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
408 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
409 |
3128 | 410 pthread_mutex_lock(&memmut); |
411 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
412 switch(header->type) |
128 | 413 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
414 case AREATYPE_EVENT: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
415 destroy_event(memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
416 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
417 case AREATYPE_COND: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
418 pthread_cond_destroy((pthread_cond_t*)memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
419 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
420 case AREATYPE_MUTEX: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
421 pthread_mutex_destroy((pthread_mutex_t*)memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
422 break; |
3134 | 423 case AREATYPE_CRITSECT: |
424 pthread_mutex_destroy(&((struct CRITSECT*)memory)->mutex); | |
425 break; | |
426 default: | |
427 //memset(memory, 0xcc, header->size); | |
4384 | 428 ; |
128 | 429 } |
3128 | 430 |
3465 | 431 header->deadbeef = 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
432 prevmem = header->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
433 nextmem = header->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
434 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
435 if (prevmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
436 prevmem->next = nextmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
437 if (nextmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
438 nextmem->prev = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
439 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
440 if (header == last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
441 last_alloc = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
442 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
443 alccnt--; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
444 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
445 if (last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
446 pthread_mutex_unlock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
447 else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
448 pthread_mutex_destroy(&memmut); |
3465 | 449 |
3128 | 450 //if (alccnt < 40000) printf("MY_RELEASE: %p\t%ld (%d)\n", header, header->size, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
451 #else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
452 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
453 return 0; |
128 | 454 #endif |
3465 | 455 //memset(header + 1, 0xcc, header->size); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
456 free(header); |
1 | 457 return 0; |
458 } | |
459 #endif | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
460 |
7386 | 461 static inline void* my_mreq(int size, int to_zero) |
3465 | 462 { |
463 return mreq_private(size, to_zero, AREATYPE_CLIENT); | |
464 } | |
465 | |
7386 | 466 static int my_size(void* memory) |
5234 | 467 { |
468 if(!memory) return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
469 return ((alloc_header*)memory)[-1].size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
470 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
471 |
3465 | 472 static void* my_realloc(void* memory, int size) |
1 | 473 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
474 void *ans = memory; |
5234 | 475 int osize; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
476 if (memory == NULL) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
477 return my_mreq(size, 0); |
5234 | 478 osize = my_size(memory); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
479 if (osize < size) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
480 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
481 ans = my_mreq(size, 0); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
482 memcpy(ans, memory, osize); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
483 my_release(memory); |
2069 | 484 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
485 return ans; |
2069 | 486 } |
1 | 487 |
3465 | 488 /* |
489 * | |
490 * WINE API - native implementation for several win32 libraries | |
491 * | |
492 */ | |
493 | |
494 static int WINAPI ext_unknown() | |
1 | 495 { |
496 printf("Unknown func called\n"); | |
497 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
498 } |
3465 | 499 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
500 static int WINAPI expGetVolumeInformationA( const char *root, char *label, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
501 unsigned int label_len, unsigned int *serial, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
502 unsigned int *filename_len,unsigned int *flags, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
503 char *fsname, unsigned int fsname_len ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
504 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
505 dbgprintf("GetVolumeInformationA( %s, 0x%x, %ld, 0x%x, 0x%x, 0x%x, 0x%x, %ld) => 1\n", |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
506 root,label,label_len,serial,filename_len,flags,fsname,fsname_len); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
507 //hack Do not return any real data - do nothing |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
508 return 1; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
509 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
510 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
511 static unsigned int WINAPI expGetDriveTypeA( const char *root ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
512 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
513 dbgprintf("GetDriveTypeA( %s ) => %d\n",root,DRIVE_FIXED); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
514 // hack return as Fixed Drive Type |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
515 return DRIVE_FIXED; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
516 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
517 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
518 static unsigned int WINAPI expGetLogicalDriveStringsA( unsigned int len, char *buffer ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
519 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
520 dbgprintf("GetLogicalDriveStringsA(%d, 0x%x) => 4\n",len,buffer); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
521 // hack only have one drive c:\ in this hack |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
522 *buffer++='c'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
523 *buffer++=':'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
524 *buffer++='\\'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
525 *buffer++='\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
526 *buffer= '\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
527 return 4; // 1 drive * 4 bytes (includes null) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
528 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
529 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
530 |
3465 | 531 static int WINAPI expIsBadWritePtr(void* ptr, unsigned int count) |
1 | 532 { |
3465 | 533 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 534 dbgprintf("IsBadWritePtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
535 return result; | |
1 | 536 } |
3465 | 537 static int WINAPI expIsBadReadPtr(void* ptr, unsigned int count) |
1 | 538 { |
3465 | 539 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 540 dbgprintf("IsBadReadPtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
541 return result; | |
1 | 542 } |
3465 | 543 static int WINAPI expDisableThreadLibraryCalls(int module) |
1 | 544 { |
128 | 545 dbgprintf("DisableThreadLibraryCalls(0x%x) => 0\n", module); |
1 | 546 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
547 } |
3465 | 548 |
549 static HMODULE WINAPI expGetDriverModuleHandle(DRVR* pdrv) | |
1 | 550 { |
2069 | 551 HMODULE result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
552 if (pdrv==NULL) |
2069 | 553 result=0; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
554 else |
3465 | 555 result=pdrv->hDriverModule; |
2069 | 556 dbgprintf("GetDriverModuleHandle(%p) => %p\n", pdrv, result); |
128 | 557 return result; |
1 | 558 } |
559 | |
2069 | 560 #define MODULE_HANDLE_kernel32 ((HMODULE)0x120) |
5234 | 561 #define MODULE_HANDLE_user32 ((HMODULE)0x121) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
562 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
563 #define MODULE_HANDLE_wininet ((HMODULE)0x122) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
564 #define MODULE_HANDLE_ddraw ((HMODULE)0x123) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
565 #define MODULE_HANDLE_advapi32 ((HMODULE)0x124) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
566 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
567 #define MODULE_HANDLE_comdlg32 ((HMODULE)0x125) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
568 #define MODULE_HANDLE_msvcrt ((HMODULE)0x126) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
569 #define MODULE_HANDLE_ole32 ((HMODULE)0x127) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
570 #define MODULE_HANDLE_winmm ((HMODULE)0x128) |
2069 | 571 |
3465 | 572 static HMODULE WINAPI expGetModuleHandleA(const char* name) |
1 | 573 { |
3465 | 574 WINE_MODREF* wm; |
575 HMODULE result; | |
576 if(!name) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
577 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
578 result=1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
579 #else |
3465 | 580 result=0; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
581 #endif |
3465 | 582 else |
583 { | |
584 wm=MODULE_FindModule(name); | |
585 if(wm==0)result=0; | |
128 | 586 else |
3465 | 587 result=(HMODULE)(wm->module); |
588 } | |
589 if(!result) | |
590 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
591 if(name && (strcasecmp(name, "kernel32")==0 || !strcasecmp(name, "kernel32.dll"))) |
3465 | 592 result=MODULE_HANDLE_kernel32; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
593 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
594 if(name && strcasecmp(name, "user32")==0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
595 result=MODULE_HANDLE_user32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
596 #endif |
3465 | 597 } |
598 dbgprintf("GetModuleHandleA('%s') => 0x%x\n", name, result); | |
599 return result; | |
1 | 600 } |
128 | 601 |
3465 | 602 static void* WINAPI expCreateThread(void* pSecAttr, long dwStackSize, |
603 void* lpStartAddress, void* lpParameter, | |
604 long dwFlags, long* dwThreadId) | |
1 | 605 { |
606 pthread_t *pth; | |
3465 | 607 // printf("CreateThread:"); |
7386 | 608 pth = (pthread_t*) my_mreq(sizeof(pthread_t), 0); |
1 | 609 pthread_create(pth, NULL, (void*(*)(void*))lpStartAddress, lpParameter); |
610 if(dwFlags) | |
128 | 611 printf( "WARNING: CreateThread flags not supported\n"); |
1 | 612 if(dwThreadId) |
613 *dwThreadId=(long)pth; | |
614 if(list==NULL) | |
615 { | |
616 list=my_mreq(sizeof(th_list), 1); | |
617 list->next=list->prev=NULL; | |
618 } | |
619 else | |
620 { | |
621 list->next=my_mreq(sizeof(th_list), 0); | |
622 list->next->prev=list; | |
623 list->next->next=NULL; | |
624 list=list->next; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
625 } |
1 | 626 list->thread=pth; |
128 | 627 dbgprintf("CreateThread(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0x%x\n", |
3465 | 628 pSecAttr, dwStackSize, lpStartAddress, lpParameter, dwFlags, dwThreadId, pth); |
1 | 629 return pth; |
630 } | |
631 | |
632 struct mutex_list_t; | |
633 | |
634 struct mutex_list_t | |
635 { | |
128 | 636 char type; |
1 | 637 pthread_mutex_t *pm; |
128 | 638 pthread_cond_t *pc; |
639 char state; | |
640 char reset; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
641 char name[128]; |
128 | 642 int semaphore; |
1 | 643 struct mutex_list_t* next; |
644 struct mutex_list_t* prev; | |
645 }; | |
646 typedef struct mutex_list_t mutex_list; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
647 static mutex_list* mlist=NULL; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
648 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
649 void destroy_event(void* event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
650 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
651 mutex_list* pp=mlist; |
3465 | 652 // printf("garbage collector: destroy_event(%x)\n", event); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
653 while(pp) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
654 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
655 if(pp==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
656 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
657 if(pp->next) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
658 pp->next->prev=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
659 if(pp->prev) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
660 pp->prev->next=pp->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
661 if(mlist==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
662 mlist=mlist->prev; |
3465 | 663 /* |
664 pp=mlist; | |
665 while(pp) | |
666 { | |
667 printf("%x => ", pp); | |
668 pp=pp->prev; | |
669 } | |
670 printf("0\n"); | |
671 */ | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
672 return; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
673 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
674 pp=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
675 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
676 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
677 |
3465 | 678 static void* WINAPI expCreateEventA(void* pSecAttr, char bManualReset, |
679 char bInitialState, const char* name) | |
1 | 680 { |
681 pthread_mutex_t *pm; | |
128 | 682 pthread_cond_t *pc; |
3465 | 683 /* |
684 mutex_list* pp; | |
685 pp=mlist; | |
686 while(pp) | |
687 { | |
688 printf("%x => ", pp); | |
689 pp=pp->prev; | |
690 } | |
691 printf("0\n"); | |
692 */ | |
1 | 693 if(mlist!=NULL) |
694 { | |
695 mutex_list* pp=mlist; | |
696 if(name!=NULL) | |
3465 | 697 do |
1 | 698 { |
128 | 699 if((strcmp(pp->name, name)==0) && (pp->type==0)) |
700 { | |
701 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", | |
3465 | 702 pSecAttr, bManualReset, bInitialState, name, name, pp->pm); |
1 | 703 return pp->pm; |
128 | 704 } |
2069 | 705 }while((pp=pp->prev) != NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
706 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
707 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
1 | 708 pthread_mutex_init(pm, NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
709 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 710 pthread_cond_init(pc, NULL); |
1 | 711 if(mlist==NULL) |
712 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
713 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
1 | 714 mlist->next=mlist->prev=NULL; |
715 } | |
716 else | |
717 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
718 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 719 mlist->next->prev=mlist; |
1 | 720 mlist->next->next=NULL; |
721 mlist=mlist->next; | |
722 } | |
128 | 723 mlist->type=0; /* Type Event */ |
1 | 724 mlist->pm=pm; |
128 | 725 mlist->pc=pc; |
726 mlist->state=bInitialState; | |
727 mlist->reset=bManualReset; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
728 if(name) |
3465 | 729 strncpy(mlist->name, name, 127); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
730 else |
1 | 731 mlist->name[0]=0; |
732 if(pm==NULL) | |
733 dbgprintf("ERROR::: CreateEventA failure\n"); | |
3465 | 734 /* |
735 if(bInitialState) | |
736 pthread_mutex_lock(pm); | |
737 */ | |
128 | 738 if(name) |
3465 | 739 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", |
740 pSecAttr, bManualReset, bInitialState, name, name, mlist); | |
128 | 741 else |
3465 | 742 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, NULL) => 0x%x\n", |
743 pSecAttr, bManualReset, bInitialState, mlist); | |
128 | 744 return mlist; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
745 } |
1 | 746 |
3465 | 747 static void* WINAPI expSetEvent(void* event) |
1 | 748 { |
128 | 749 mutex_list *ml = (mutex_list *)event; |
750 dbgprintf("SetEvent(%x) => 0x1\n", event); | |
751 pthread_mutex_lock(ml->pm); | |
752 if (ml->state == 0) { | |
753 ml->state = 1; | |
754 pthread_cond_signal(ml->pc); | |
755 } | |
756 pthread_mutex_unlock(ml->pm); | |
757 | |
758 return (void *)1; | |
1 | 759 } |
3465 | 760 static void* WINAPI expResetEvent(void* event) |
1 | 761 { |
128 | 762 mutex_list *ml = (mutex_list *)event; |
763 dbgprintf("ResetEvent(0x%x) => 0x1\n", event); | |
764 pthread_mutex_lock(ml->pm); | |
765 ml->state = 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
766 pthread_mutex_unlock(ml->pm); |
128 | 767 |
768 return (void *)1; | |
1 | 769 } |
770 | |
3465 | 771 static void* WINAPI expWaitForSingleObject(void* object, int duration) |
1 | 772 { |
128 | 773 mutex_list *ml = (mutex_list *)object; |
2069 | 774 // FIXME FIXME FIXME - this value is sometime unititialize !!! |
775 int ret = WAIT_FAILED; | |
128 | 776 mutex_list* pp=mlist; |
2779 | 777 if(object == (void*)0xcfcf9898) |
778 { | |
3465 | 779 /** |
780 From GetCurrentThread() documentation: | |
781 A pseudo handle is a special constant that is interpreted as the current thread handle. The calling thread can use this handle to specify itself whenever a thread handle is required. Pseudo handles are not inherited by child processes. | |
782 | |
783 This handle has the maximum possible access to the thread object. For systems that support security descriptors, this is the maximum access allowed by the security descriptor for the calling process. For systems that do not support security descriptors, this is THREAD_ALL_ACCESS. | |
784 | |
785 The function cannot be used by one thread to create a handle that can be used by other threads to refer to the first thread. The handle is always interpreted as referring to the thread that is using it. A thread can create a "real" handle to itself that can be used by other threads, or inherited by other processes, by specifying the pseudo handle as the source handle in a call to the DuplicateHandle function. | |
786 **/ | |
2779 | 787 dbgprintf("WaitForSingleObject(thread_handle) called\n"); |
3128 | 788 return (void*)WAIT_FAILED; |
2779 | 789 } |
2069 | 790 dbgprintf("WaitForSingleObject(0x%x, duration %d) =>\n",object, duration); |
791 | |
718 | 792 // loop below was slightly fixed - its used just for checking if |
793 // this object really exists in our list | |
794 if (!ml) | |
3465 | 795 return (void*) ret; |
718 | 796 while (pp && (pp->pm != ml->pm)) |
2069 | 797 pp = pp->prev; |
718 | 798 if (!pp) { |
2069 | 799 dbgprintf("WaitForSingleObject: NotFound\n"); |
800 return (void*)ret; | |
718 | 801 } |
128 | 802 |
803 pthread_mutex_lock(ml->pm); | |
804 | |
805 switch(ml->type) { | |
3465 | 806 case 0: /* Event */ |
128 | 807 if (duration == 0) { /* Check Only */ |
3465 | 808 if (ml->state == 1) ret = WAIT_FAILED; |
809 else ret = WAIT_OBJECT_0; | |
128 | 810 } |
811 if (duration == -1) { /* INFINITE */ | |
3465 | 812 if (ml->state == 0) |
813 pthread_cond_wait(ml->pc,ml->pm); | |
814 if (ml->reset) | |
815 ml->state = 0; | |
816 ret = WAIT_OBJECT_0; | |
128 | 817 } |
818 if (duration > 0) { /* Timed Wait */ | |
3465 | 819 struct timespec abstime; |
820 struct timeval now; | |
821 gettimeofday(&now, 0); | |
822 abstime.tv_sec = now.tv_sec + (now.tv_usec+duration)/1000000; | |
823 abstime.tv_nsec = ((now.tv_usec+duration)%1000000)*1000; | |
824 if (ml->state == 0) | |
825 ret=pthread_cond_timedwait(ml->pc,ml->pm,&abstime); | |
826 if (ret == ETIMEDOUT) ret = WAIT_TIMEOUT; | |
827 else ret = WAIT_OBJECT_0; | |
828 if (ml->reset) | |
829 ml->state = 0; | |
128 | 830 } |
3465 | 831 break; |
832 case 1: /* Semaphore */ | |
833 if (duration == 0) { | |
834 if(ml->semaphore==0) ret = WAIT_FAILED; | |
835 else { | |
836 ml->semaphore++; | |
837 ret = WAIT_OBJECT_0; | |
838 } | |
839 } | |
128 | 840 if (duration == -1) { |
3465 | 841 if (ml->semaphore==0) |
842 pthread_cond_wait(ml->pc,ml->pm); | |
843 ml->semaphore--; | |
128 | 844 } |
3465 | 845 break; |
128 | 846 } |
847 pthread_mutex_unlock(ml->pm); | |
848 | |
849 dbgprintf("WaitForSingleObject(0x%x, %d): 0x%x => 0x%x \n",object,duration,ml,ret); | |
850 return (void *)ret; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
851 } |
1 | 852 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
853 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
854 static void* WINAPI expWaitForMultipleObjects(int count, const void** objects, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
855 int WaitAll, int duration) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
856 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
857 int i; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
858 void *object; |
8451 | 859 void *ret; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
860 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
861 dbgprintf("WaitForMultipleObjects(%d, 0x%x, %d, duration %d) =>\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
862 count, objects, WaitAll, duration); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
863 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
864 for (i = 0; i < count; i++) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
865 { |
13182 | 866 object = (void *)objects[i]; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
867 ret = expWaitForSingleObject(object, duration); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
868 if (WaitAll) |
8285 | 869 dbgprintf("WaitAll flag not yet supported...\n"); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
870 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
871 return ret; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
872 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
873 return NULL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
874 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
875 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
876 static void WINAPI expExitThread(int retcode) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
877 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
878 dbgprintf("ExitThread(%d)\n", retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
879 pthread_exit(&retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
880 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
881 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
882 static HANDLE WINAPI expCreateMutexA(void *pSecAttr, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
883 char bInitialOwner, const char *name) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
884 { |
8451 | 885 HANDLE mlist = (HANDLE)expCreateEventA(pSecAttr, 0, 0, name); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
886 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
887 if (name) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
888 dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
889 pSecAttr, bInitialOwner, name, mlist); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
890 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
891 dbgprintf("CreateMutexA(0x%x, %d, NULL) => 0x%x\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
892 pSecAttr, bInitialOwner, mlist); |
8281 | 893 #ifndef QTX |
894 /* 10l to QTX, if CreateMutex returns a real mutex, WaitForSingleObject | |
895 waits for ever, else it works ;) */ | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
896 return mlist; |
8281 | 897 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
898 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
899 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
900 static int WINAPI expReleaseMutex(HANDLE hMutex) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
901 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
902 dbgprintf("ReleaseMutex(%x) => 1\n", hMutex); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
903 /* FIXME:XXX !! not yet implemented */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
904 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
905 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
906 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
907 |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
908 static int pf_set = 0; |
1 | 909 static BYTE PF[64] = {0,}; |
910 | |
128 | 911 static void DumpSystemInfo(const SYSTEM_INFO* si) |
912 { | |
913 dbgprintf(" Processor architecture %d\n", si->u.s.wProcessorArchitecture); | |
914 dbgprintf(" Page size: %d\n", si->dwPageSize); | |
915 dbgprintf(" Minimum app address: %d\n", si->lpMinimumApplicationAddress); | |
916 dbgprintf(" Maximum app address: %d\n", si->lpMaximumApplicationAddress); | |
917 dbgprintf(" Active processor mask: 0x%x\n", si->dwActiveProcessorMask); | |
918 dbgprintf(" Number of processors: %d\n", si->dwNumberOfProcessors); | |
919 dbgprintf(" Processor type: 0x%x\n", si->dwProcessorType); | |
920 dbgprintf(" Allocation granularity: 0x%x\n", si->dwAllocationGranularity); | |
921 dbgprintf(" Processor level: 0x%x\n", si->wProcessorLevel); | |
922 dbgprintf(" Processor revision: 0x%x\n", si->wProcessorRevision); | |
923 } | |
924 | |
3465 | 925 static void WINAPI expGetSystemInfo(SYSTEM_INFO* si) |
1 | 926 { |
3465 | 927 /* FIXME: better values for the two entries below... */ |
928 static int cache = 0; | |
929 static SYSTEM_INFO cachedsi; | |
930 unsigned int regs[4]; | |
931 dbgprintf("GetSystemInfo(%p) =>\n", si); | |
932 | |
933 if (cache) { | |
934 memcpy(si,&cachedsi,sizeof(*si)); | |
935 DumpSystemInfo(si); | |
936 return; | |
937 } | |
938 memset(PF,0,sizeof(PF)); | |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
939 pf_set = 1; |
3465 | 940 |
941 cachedsi.u.s.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_INTEL; | |
942 cachedsi.dwPageSize = getpagesize(); | |
943 | |
944 /* FIXME: better values for the two entries below... */ | |
945 cachedsi.lpMinimumApplicationAddress = (void *)0x00000000; | |
946 cachedsi.lpMaximumApplicationAddress = (void *)0x7FFFFFFF; | |
947 cachedsi.dwActiveProcessorMask = 1; | |
948 cachedsi.dwNumberOfProcessors = 1; | |
949 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
950 cachedsi.dwAllocationGranularity = 0x10000; | |
951 cachedsi.wProcessorLevel = 5; /* pentium */ | |
952 cachedsi.wProcessorRevision = 0x0101; | |
953 | |
954 #ifdef MPLAYER | |
955 /* mplayer's way to detect PF's */ | |
956 { | |
957 #include "../cpudetect.h" | |
958 extern CpuCaps gCpuCaps; | |
959 | |
960 if (gCpuCaps.hasMMX) | |
961 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
962 if (gCpuCaps.hasSSE) | |
963 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; | |
964 if (gCpuCaps.has3DNow) | |
965 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
3404 | 966 |
10013 | 967 if (gCpuCaps.cpuType == 4) |
968 { | |
969 cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
970 cachedsi.wProcessorLevel = 4; | |
971 } | |
10139
8ac4502b7b3d
10l by me, noticed by a guy with a transmeta cpu, but forgot his name, sorry
alex
parents:
10013
diff
changeset
|
972 else if (gCpuCaps.cpuType >= 5) |
3404 | 973 { |
10013 | 974 cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; |
975 cachedsi.wProcessorLevel = 5; | |
976 } | |
977 else | |
978 { | |
979 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
980 cachedsi.wProcessorLevel = 3; | |
3404 | 981 } |
982 cachedsi.wProcessorRevision = gCpuCaps.cpuStepping; | |
983 cachedsi.dwNumberOfProcessors = 1; /* hardcoded */ | |
3465 | 984 } |
3405 | 985 #endif |
3128 | 986 |
3404 | 987 /* disable cpuid based detection (mplayer's cpudetect.c does this - see above) */ |
3465 | 988 #ifndef MPLAYER |
1038
b36fb1ae4b53
applied solaris8/netbsd/other fixes patch by J«ärgen Keil <jk@tools.de>
arpi_esp
parents:
718
diff
changeset
|
989 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__svr4__) |
3465 | 990 do_cpuid(1, regs); |
991 switch ((regs[0] >> 8) & 0xf) { // cpu family | |
992 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
993 cachedsi.wProcessorLevel= 3; | |
994 break; | |
995 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
996 cachedsi.wProcessorLevel= 4; | |
997 break; | |
998 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
999 cachedsi.wProcessorLevel= 5; | |
1000 break; | |
1001 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1002 cachedsi.wProcessorLevel= 5; | |
1003 break; | |
1004 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1005 cachedsi.wProcessorLevel= 5; | |
1006 break; | |
1007 } | |
1008 cachedsi.wProcessorRevision = regs[0] & 0xf; // stepping | |
1009 if (regs[3] & (1 << 8)) | |
1010 PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE; | |
1011 if (regs[3] & (1 << 23)) | |
1012 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1013 if (regs[3] & (1 << 25)) | |
1014 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1015 if (regs[3] & (1 << 31)) | |
1016 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1017 cachedsi.dwNumberOfProcessors=1; | |
3404 | 1018 #endif |
3465 | 1019 #endif /* MPLAYER */ |
3404 | 1020 |
3405 | 1021 /* MPlayer: linux detection enabled (based on proc/cpuinfo) for checking |
1022 fdiv_bug and fpu emulation flags -- alex/MPlayer */ | |
3404 | 1023 #ifdef __linux__ |
3465 | 1024 { |
1 | 1025 char buf[20]; |
1026 char line[200]; | |
1027 FILE *f = fopen ("/proc/cpuinfo", "r"); | |
1028 | |
1029 if (!f) | |
3465 | 1030 return; |
1 | 1031 while (fgets(line,200,f)!=NULL) { |
3465 | 1032 char *s,*value; |
1033 | |
1034 /* NOTE: the ':' is the only character we can rely on */ | |
1035 if (!(value = strchr(line,':'))) | |
1036 continue; | |
1037 /* terminate the valuename */ | |
1038 *value++ = '\0'; | |
1039 /* skip any leading spaces */ | |
1040 while (*value==' ') value++; | |
1041 if ((s=strchr(value,'\n'))) | |
1042 *s='\0'; | |
1043 | |
1044 /* 2.1 method */ | |
1045 if (!lstrncmpiA(line, "cpu family",strlen("cpu family"))) { | |
1046 if (isdigit (value[0])) { | |
1047 switch (value[0] - '0') { | |
1048 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1049 cachedsi.wProcessorLevel= 3; | |
1050 break; | |
1051 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1052 cachedsi.wProcessorLevel= 4; | |
1053 break; | |
1054 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1055 cachedsi.wProcessorLevel= 5; | |
1056 break; | |
1057 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1058 cachedsi.wProcessorLevel= 5; | |
1059 break; | |
1060 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1061 cachedsi.wProcessorLevel= 5; | |
1062 break; | |
1063 } | |
1 | 1064 } |
3465 | 1065 /* set the CPU type of the current processor */ |
1066 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1067 continue; | |
1068 } | |
1069 /* old 2.0 method */ | |
1070 if (!lstrncmpiA(line, "cpu",strlen("cpu"))) { | |
1071 if ( isdigit (value[0]) && value[1] == '8' && | |
1072 value[2] == '6' && value[3] == 0 | |
1073 ) { | |
1074 switch (value[0] - '0') { | |
1075 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1076 cachedsi.wProcessorLevel= 3; | |
1077 break; | |
1078 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1079 cachedsi.wProcessorLevel= 4; | |
1080 break; | |
1081 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1082 cachedsi.wProcessorLevel= 5; | |
1083 break; | |
1084 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1085 cachedsi.wProcessorLevel= 5; | |
1086 break; | |
1087 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1088 cachedsi.wProcessorLevel= 5; | |
1089 break; | |
1090 } | |
1 | 1091 } |
3465 | 1092 /* set the CPU type of the current processor */ |
1093 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1094 continue; | |
1095 } | |
1096 if (!lstrncmpiA(line,"fdiv_bug",strlen("fdiv_bug"))) { | |
1097 if (!lstrncmpiA(value,"yes",3)) | |
1098 PF[PF_FLOATING_POINT_PRECISION_ERRATA] = TRUE; | |
1099 | |
1100 continue; | |
1101 } | |
1102 if (!lstrncmpiA(line,"fpu",strlen("fpu"))) { | |
1103 if (!lstrncmpiA(value,"no",2)) | |
1104 PF[PF_FLOATING_POINT_EMULATED] = TRUE; | |
1105 | |
1106 continue; | |
1107 } | |
1108 if (!lstrncmpiA(line,"processor",strlen("processor"))) { | |
1109 /* processor number counts up...*/ | |
7386 | 1110 unsigned int x; |
3465 | 1111 |
1112 if (sscanf(value,"%d",&x)) | |
1113 if (x+1>cachedsi.dwNumberOfProcessors) | |
1114 cachedsi.dwNumberOfProcessors=x+1; | |
1115 | |
1116 /* Create a new processor subkey on a multiprocessor | |
1117 * system | |
1118 */ | |
1119 sprintf(buf,"%d",x); | |
1120 } | |
1121 if (!lstrncmpiA(line,"stepping",strlen("stepping"))) { | |
1122 int x; | |
1123 | |
1124 if (sscanf(value,"%d",&x)) | |
1125 cachedsi.wProcessorRevision = x; | |
1126 } | |
1127 if | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1128 ( (!lstrncmpiA(line,"flags",strlen("flags"))) |
3465 | 1129 || (!lstrncmpiA(line,"features",strlen("features"))) ) |
1130 { | |
1131 if (strstr(value,"cx8")) | |
1132 PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE; | |
1133 if (strstr(value,"mmx")) | |
1134 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1135 if (strstr(value,"tsc")) | |
1136 PF[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE; | |
1137 if (strstr(value,"xmm")) | |
1138 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1139 if (strstr(value,"3dnow")) | |
1140 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1141 } | |
1 | 1142 } |
1143 fclose (f); | |
3465 | 1144 /* |
1145 * ad hoc fix for smp machines. | |
1146 * some problems on WaitForSingleObject,CreateEvent,SetEvent | |
1147 * CreateThread ...etc.. | |
1148 * | |
1149 */ | |
1150 cachedsi.dwNumberOfProcessors=1; | |
1151 } | |
3404 | 1152 #endif /* __linux__ */ |
3465 | 1153 cache = 1; |
1154 memcpy(si,&cachedsi,sizeof(*si)); | |
1155 DumpSystemInfo(si); | |
1 | 1156 } |
1157 | |
7386 | 1158 // avoid undefined expGetSystemInfo |
1159 static WIN_BOOL WINAPI expIsProcessorFeaturePresent(DWORD v) | |
1160 { | |
1161 WIN_BOOL result = 0; | |
1162 if (!pf_set) | |
1163 { | |
1164 SYSTEM_INFO si; | |
1165 expGetSystemInfo(&si); | |
1166 } | |
1167 if(v<64) result=PF[v]; | |
1168 dbgprintf("IsProcessorFeaturePresent(0x%x) => 0x%x\n", v, result); | |
1169 return result; | |
1170 } | |
1171 | |
1172 | |
3465 | 1173 static long WINAPI expGetVersion() |
1 | 1174 { |
128 | 1175 dbgprintf("GetVersion() => 0xC0000004\n"); |
1176 return 0xC0000004;//Windows 95 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1177 } |
1 | 1178 |
3465 | 1179 static HANDLE WINAPI expHeapCreate(long flags, long init_size, long max_size) |
1 | 1180 { |
3465 | 1181 // printf("HeapCreate:"); |
128 | 1182 HANDLE result; |
1 | 1183 if(init_size==0) |
3465 | 1184 result=(HANDLE)my_mreq(0x110000, 0); |
1 | 1185 else |
3465 | 1186 result=(HANDLE)my_mreq((init_size + 0xfff) & 0x7ffff000 , 0); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1187 dbgprintf("HeapCreate(flags 0x%x, initial size %d, maximum size %d) => 0x%x\n", flags, init_size, max_size, result); |
128 | 1188 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1189 } |
3128 | 1190 |
1191 // this is another dirty hack | |
3465 | 1192 // VP31 is releasing one allocated Heap chunk twice |
3128 | 1193 // we will silently ignore this second call... |
1194 static void* heapfreehack = 0; | |
1195 static int heapfreehackshown = 0; | |
3465 | 1196 //extern void trapbug(void); |
1197 static void* WINAPI expHeapAlloc(HANDLE heap, int flags, int size) | |
1 | 1198 { |
1199 void* z; | |
3465 | 1200 /** |
1201 Morgan's m3jpeg32.dll v. 2.0 encoder expects that request for | |
1202 HeapAlloc returns area larger than size argument :-/ | |
1203 | |
1204 actually according to M$ Doc HeapCreate size should be rounded | |
1205 to page boundaries thus we should simulate this | |
1206 **/ | |
1207 //if (size == 22276) trapbug(); | |
1208 z=my_mreq((size + 0xfff) & 0x7ffff000, (flags & HEAP_ZERO_MEMORY)); | |
1 | 1209 if(z==0) |
1210 printf("HeapAlloc failure\n"); | |
3465 | 1211 dbgprintf("HeapAlloc(heap 0x%x, flags 0x%x, size %d) => 0x%x\n", heap, flags, size, z); |
3128 | 1212 heapfreehack = 0; // reset |
1 | 1213 return z; |
1214 } | |
3465 | 1215 static long WINAPI expHeapDestroy(void* heap) |
1 | 1216 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1217 dbgprintf("HeapDestroy(heap 0x%x) => 1\n", heap); |
1 | 1218 my_release(heap); |
1219 return 1; | |
1220 } | |
1221 | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1222 static long WINAPI expHeapFree(HANDLE heap, DWORD dwFlags, LPVOID lpMem) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1223 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1224 dbgprintf("HeapFree(0x%x, 0x%x, pointer 0x%x) => 1\n", heap, dwFlags, lpMem); |
7386 | 1225 if (heapfreehack != lpMem && lpMem != (void*)0xffffffff |
1226 && lpMem != (void*)0xbdbdbdbd) | |
1227 // 0xbdbdbdbd is for i263_drv.drv && libefence | |
1228 // it seems to be reading from relased memory | |
1229 // EF_PROTECT_FREE doens't show any probleme | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1230 my_release(lpMem); |
3128 | 1231 else |
1232 { | |
3465 | 1233 if (!heapfreehackshown++) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1234 printf("Info: HeapFree deallocating same memory twice! (%p)\n", lpMem); |
3128 | 1235 } |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1236 heapfreehack = lpMem; |
1 | 1237 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1238 } |
3465 | 1239 static long WINAPI expHeapSize(int heap, int flags, void* pointer) |
1 | 1240 { |
128 | 1241 long result=my_size(pointer); |
1242 dbgprintf("HeapSize(heap 0x%x, flags 0x%x, pointer 0x%x) => %d\n", heap, flags, pointer, result); | |
1243 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1244 } |
3465 | 1245 static void* WINAPI expHeapReAlloc(HANDLE heap,int flags,void *lpMem,int size) |
2069 | 1246 { |
3465 | 1247 long orgsize = my_size(lpMem); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1248 dbgprintf("HeapReAlloc() Size %ld org %d\n",orgsize,size); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1249 return my_realloc(lpMem, size); |
2069 | 1250 } |
3465 | 1251 static long WINAPI expGetProcessHeap(void) |
1 | 1252 { |
128 | 1253 dbgprintf("GetProcessHeap() => 1\n"); |
1 | 1254 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1255 } |
3465 | 1256 static void* WINAPI expVirtualAlloc(void* v1, long v2, long v3, long v4) |
1 | 1257 { |
3465 | 1258 void* z = VirtualAlloc(v1, v2, v3, v4); |
1 | 1259 if(z==0) |
1260 printf("VirtualAlloc failure\n"); | |
128 | 1261 dbgprintf("VirtualAlloc(0x%x, %d, %d, %d) => 0x%x \n",v1,v2,v3,v4, z); |
1 | 1262 return z; |
1263 } | |
3465 | 1264 static int WINAPI expVirtualFree(void* v1, int v2, int v3) |
1 | 1265 { |
3465 | 1266 int result = VirtualFree(v1,v2,v3); |
128 | 1267 dbgprintf("VirtualFree(0x%x, %d, %d) => %d\n",v1,v2,v3, result); |
1268 return result; | |
3128 | 1269 } |
2579 | 1270 |
1271 /* we're building a table of critical sections. cs_win pointer uses the DLL | |
3465 | 1272 cs_unix is the real structure, we're using cs_win only to identifying cs_unix */ |
2579 | 1273 struct critsecs_list_t |
1274 { | |
1275 CRITICAL_SECTION *cs_win; | |
1276 struct CRITSECT *cs_unix; | |
1277 }; | |
1278 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1279 /* 'NEWTYPE' is working with VIVO, 3ivX and QTX dll (no more segfaults) -- alex */ |
8393
08e71f6a7531
it seems that old CS is working better than newtype now... :)
arpi
parents:
8391
diff
changeset
|
1280 #undef CRITSECS_NEWTYPE |
08e71f6a7531
it seems that old CS is working better than newtype now... :)
arpi
parents:
8391
diff
changeset
|
1281 //#define CRITSECS_NEWTYPE 1 |
3128 | 1282 |
1283 #ifdef CRITSECS_NEWTYPE | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1284 /* increased due to ucod needs more than 32 entries */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1285 /* and 64 should be enough for everything */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1286 #define CRITSECS_LIST_MAX 64 |
2579 | 1287 static struct critsecs_list_t critsecs_list[CRITSECS_LIST_MAX]; |
1288 | |
3465 | 1289 static int critsecs_get_pos(CRITICAL_SECTION *cs_win) |
2579 | 1290 { |
1291 int i; | |
3128 | 1292 |
2579 | 1293 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1294 if (critsecs_list[i].cs_win == cs_win) | |
1295 return(i); | |
1296 return(-1); | |
1297 } | |
1298 | |
3465 | 1299 static int critsecs_get_unused(void) |
2579 | 1300 { |
1301 int i; | |
3128 | 1302 |
2579 | 1303 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1304 if (critsecs_list[i].cs_win == NULL) | |
1305 return(i); | |
1306 return(-1); | |
1307 } | |
1308 | |
1309 struct CRITSECT *critsecs_get_unix(CRITICAL_SECTION *cs_win) | |
1310 { | |
1311 int i; | |
3128 | 1312 |
2579 | 1313 for (i=0; i < CRITSECS_LIST_MAX; i++) |
2670 | 1314 if (critsecs_list[i].cs_win == cs_win && critsecs_list[i].cs_unix) |
2579 | 1315 return(critsecs_list[i].cs_unix); |
1316 return(NULL); | |
1317 } | |
1318 #endif | |
1319 | |
3465 | 1320 static void WINAPI expInitializeCriticalSection(CRITICAL_SECTION* c) |
1 | 1321 { |
128 | 1322 dbgprintf("InitializeCriticalSection(0x%x)\n", c); |
3465 | 1323 /* if(sizeof(pthread_mutex_t)>sizeof(CRITICAL_SECTION)) |
1324 { | |
1325 printf(" ERROR:::: sizeof(pthread_mutex_t) is %d, expected <=%d!\n", | |
1326 sizeof(pthread_mutex_t), sizeof(CRITICAL_SECTION)); | |
1327 return; | |
1328 }*/ | |
1329 /* pthread_mutex_init((pthread_mutex_t*)c, NULL); */ | |
2579 | 1330 #ifdef CRITSECS_NEWTYPE |
1331 { | |
3465 | 1332 struct CRITSECT *cs; |
1333 int i = critsecs_get_unused(); | |
1334 | |
1335 if (i < 0) | |
1336 { | |
1337 printf("InitializeCriticalSection(%p) - no more space in list\n", c); | |
1338 return; | |
1339 } | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1340 dbgprintf("got unused space at %d\n", i); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1341 cs = malloc(sizeof(struct CRITSECT)); |
3465 | 1342 if (!cs) |
1343 { | |
1344 printf("InitializeCriticalSection(%p) - out of memory\n", c); | |
1345 return; | |
1346 } | |
1347 pthread_mutex_init(&cs->mutex, NULL); | |
1348 cs->locked = 0; | |
1349 critsecs_list[i].cs_win = c; | |
1350 critsecs_list[i].cs_unix = cs; | |
1351 dbgprintf("InitializeCriticalSection -> itemno=%d, cs_win=%p, cs_unix=%p\n", | |
1352 i, c, cs); | |
2579 | 1353 } |
3465 | 1354 #else |
2670 | 1355 { |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1356 struct CRITSECT* cs = mreq_private(sizeof(struct CRITSECT) + sizeof(CRITICAL_SECTION), |
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1357 0, AREATYPE_CRITSECT); |
3465 | 1358 pthread_mutex_init(&cs->mutex, NULL); |
1359 cs->locked=0; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1360 cs->deadbeef = 0xdeadbeef; |
7718 | 1361 *(void**)c = cs; |
2670 | 1362 } |
2579 | 1363 #endif |
1 | 1364 return; |
2579 | 1365 } |
1366 | |
3465 | 1367 static void WINAPI expEnterCriticalSection(CRITICAL_SECTION* c) |
1 | 1368 { |
2579 | 1369 #ifdef CRITSECS_NEWTYPE |
1370 struct CRITSECT* cs = critsecs_get_unix(c); | |
1371 #else | |
7718 | 1372 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1373 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1374 dbgprintf("EnterCriticalSection(0x%x) %p\n",c, cs); |
2069 | 1375 if (!cs) |
1376 { | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1377 dbgprintf("entered uninitialized critisec!\n"); |
2069 | 1378 expInitializeCriticalSection(c); |
2579 | 1379 #ifdef CRITSECS_NEWTYPE |
1380 cs=critsecs_get_unix(c); | |
1381 #else | |
7718 | 1382 cs = (*(struct CRITSECT**)c); |
2579 | 1383 #endif |
12074 | 1384 dbgprintf("Win32 Warning: Accessed uninitialized Critical Section (%p)!\n", c); |
2069 | 1385 } |
1 | 1386 if(cs->locked) |
1387 if(cs->id==pthread_self()) | |
1388 return; | |
1389 pthread_mutex_lock(&(cs->mutex)); | |
1390 cs->locked=1; | |
1391 cs->id=pthread_self(); | |
1392 return; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1393 } |
3465 | 1394 static void WINAPI expLeaveCriticalSection(CRITICAL_SECTION* c) |
1 | 1395 { |
2579 | 1396 #ifdef CRITSECS_NEWTYPE |
1397 struct CRITSECT* cs = critsecs_get_unix(c); | |
1398 #else | |
7718 | 1399 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1400 #endif |
3465 | 1401 // struct CRITSECT* cs=(struct CRITSECT*)c; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1402 dbgprintf("LeaveCriticalSection(0x%x) 0x%x\n",c, cs); |
2069 | 1403 if (!cs) |
1404 { | |
12074 | 1405 dbgprintf("Win32 Warning: Leaving uninitialized Critical Section %p!!\n", c); |
2069 | 1406 return; |
1407 } | |
11852
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1408 if (cs->locked) |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1409 { |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1410 cs->locked=0; |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1411 pthread_mutex_unlock(&(cs->mutex)); |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1412 } |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1413 else |
12074 | 1414 dbgprintf("Win32 Warning: Unlocking unlocked Critical Section %p!!\n", c); |
1 | 1415 return; |
1416 } | |
8451 | 1417 |
1418 static void expfree(void* mem); /* forward declaration */ | |
1419 | |
3465 | 1420 static void WINAPI expDeleteCriticalSection(CRITICAL_SECTION *c) |
1 | 1421 { |
2579 | 1422 #ifdef CRITSECS_NEWTYPE |
1423 struct CRITSECT* cs = critsecs_get_unix(c); | |
1424 #else | |
7718 | 1425 struct CRITSECT* cs= (*(struct CRITSECT**)c); |
2579 | 1426 #endif |
3465 | 1427 // struct CRITSECT* cs=(struct CRITSECT*)c; |
128 | 1428 dbgprintf("DeleteCriticalSection(0x%x)\n",c); |
3465 | 1429 |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1430 if (!cs) |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1431 { |
12074 | 1432 dbgprintf("Win32 Warning: Deleting uninitialized Critical Section %p!!\n", c); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1433 return; |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1434 } |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1435 |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1436 if (cs->locked) |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1437 { |
12074 | 1438 dbgprintf("Win32 Warning: Deleting unlocked Critical Section %p!!\n", c); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1439 pthread_mutex_unlock(&(cs->mutex)); |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1440 } |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1441 |
3465 | 1442 #ifndef GARBAGE |
128 | 1443 pthread_mutex_destroy(&(cs->mutex)); |
3465 | 1444 // released by GarbageCollector in my_relase otherwise |
1445 #endif | |
1446 my_release(cs); | |
2579 | 1447 #ifdef CRITSECS_NEWTYPE |
1448 { | |
3465 | 1449 int i = critsecs_get_pos(c); |
1450 | |
1451 if (i < 0) | |
1452 { | |
1453 printf("DeleteCriticalSection(%p) error (critsec not found)\n", c); | |
1454 return; | |
1455 } | |
1456 | |
1457 critsecs_list[i].cs_win = NULL; | |
1458 expfree(critsecs_list[i].cs_unix); | |
1459 critsecs_list[i].cs_unix = NULL; | |
1460 dbgprintf("DeleteCriticalSection -> itemno=%d\n", i); | |
2579 | 1461 } |
1462 #endif | |
1 | 1463 return; |
1464 } | |
3465 | 1465 static int WINAPI expGetCurrentThreadId() |
1 | 1466 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1467 dbgprintf("GetCurrentThreadId() => %d\n", pthread_self()); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1468 return pthread_self(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1469 } |
3465 | 1470 static int WINAPI expGetCurrentProcess() |
128 | 1471 { |
1472 dbgprintf("GetCurrentProcess() => %d\n", getpid()); | |
1 | 1473 return getpid(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1474 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1475 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1476 #ifdef QTX |
3128 | 1477 // this version is required for Quicktime codecs (.qtx/.qts) to work. |
1478 // (they assume some pointers at FS: segment) | |
1479 | |
7386 | 1480 extern void* fs_seg; |
1481 | |
2779 | 1482 //static int tls_count; |
1483 static int tls_use_map[64]; | |
3465 | 1484 static int WINAPI expTlsAlloc() |
2779 | 1485 { |
1486 int i; | |
1487 for(i=0; i<64; i++) | |
1488 if(tls_use_map[i]==0) | |
1489 { | |
1490 tls_use_map[i]=1; | |
5234 | 1491 dbgprintf("TlsAlloc() => %d\n",i); |
2779 | 1492 return i; |
1493 } | |
5234 | 1494 dbgprintf("TlsAlloc() => -1 (ERROR)\n"); |
2779 | 1495 return -1; |
1496 } | |
1497 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1498 //static int WINAPI expTlsSetValue(DWORD index, void* value) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1499 static int WINAPI expTlsSetValue(int index, void* value) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1500 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1501 dbgprintf("TlsSetValue(%d,0x%x) => 1\n",index,value); |
5234 | 1502 // if((index<0) || (index>64)) |
1503 if((index>=64)) | |
2779 | 1504 return 0; |
1505 *(void**)((char*)fs_seg+0x88+4*index) = value; | |
1506 return 1; | |
1507 } | |
1508 | |
5234 | 1509 static void* WINAPI expTlsGetValue(DWORD index) |
1510 { | |
1511 dbgprintf("TlsGetValue(%d)\n",index); | |
1512 // if((index<0) || (index>64)) | |
1513 if((index>=64)) return NULL; | |
1514 return *(void**)((char*)fs_seg+0x88+4*index); | |
2779 | 1515 } |
1516 | |
3465 | 1517 static int WINAPI expTlsFree(int idx) |
2779 | 1518 { |
3465 | 1519 int index = (int) idx; |
5234 | 1520 dbgprintf("TlsFree(%d)\n",index); |
2779 | 1521 if((index<0) || (index>64)) |
1522 return 0; | |
1523 tls_use_map[index]=0; | |
1524 return 1; | |
1525 } | |
1526 | |
1527 #else | |
2069 | 1528 struct tls_s { |
1 | 1529 void* value; |
1530 int used; | |
1531 struct tls_s* prev; | |
1532 struct tls_s* next; | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1533 }; |
2069 | 1534 |
3465 | 1535 static void* WINAPI expTlsAlloc() |
1 | 1536 { |
7386 | 1537 if (g_tls == NULL) |
1 | 1538 { |
1539 g_tls=my_mreq(sizeof(tls_t), 0); | |
1540 g_tls->next=g_tls->prev=NULL; | |
1541 } | |
1542 else | |
1543 { | |
1544 g_tls->next=my_mreq(sizeof(tls_t), 0); | |
1545 g_tls->next->prev=g_tls; | |
1546 g_tls->next->next=NULL; | |
1547 g_tls=g_tls->next; | |
1548 } | |
128 | 1549 dbgprintf("TlsAlloc() => 0x%x\n", g_tls); |
2670 | 1550 if (g_tls) |
1551 g_tls->value=0; /* XXX For Divx.dll */ | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1552 return g_tls; |
1 | 1553 } |
1554 | |
3465 | 1555 static int WINAPI expTlsSetValue(void* idx, void* value) |
1 | 1556 { |
3465 | 1557 tls_t* index = (tls_t*) idx; |
128 | 1558 int result; |
1 | 1559 if(index==0) |
128 | 1560 result=0; |
1561 else | |
1562 { | |
1563 index->value=value; | |
1564 result=1; | |
1565 } | |
1566 dbgprintf("TlsSetValue(index 0x%x, value 0x%x) => %d \n", index, value, result ); | |
1567 return result; | |
1 | 1568 } |
3465 | 1569 static void* WINAPI expTlsGetValue(void* idx) |
1 | 1570 { |
3465 | 1571 tls_t* index = (tls_t*) idx; |
128 | 1572 void* result; |
1 | 1573 if(index==0) |
128 | 1574 result=0; |
1575 else | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1576 result=index->value; |
128 | 1577 dbgprintf("TlsGetValue(index 0x%x) => 0x%x\n", index, result); |
1578 return result; | |
1 | 1579 } |
3465 | 1580 static int WINAPI expTlsFree(void* idx) |
1 | 1581 { |
3465 | 1582 tls_t* index = (tls_t*) idx; |
128 | 1583 int result; |
1 | 1584 if(index==0) |
128 | 1585 result=0; |
1586 else | |
1587 { | |
1588 if(index->next) | |
1589 index->next->prev=index->prev; | |
1590 if(index->prev) | |
3465 | 1591 index->prev->next=index->next; |
7386 | 1592 if (g_tls == index) |
1593 g_tls = index->prev; | |
128 | 1594 my_release((void*)index); |
1595 result=1; | |
1596 } | |
1597 dbgprintf("TlsFree(index 0x%x) => %d\n", index, result); | |
1598 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1599 } |
2779 | 1600 #endif |
1601 | |
3465 | 1602 static void* WINAPI expLocalAlloc(int flags, int size) |
1 | 1603 { |
3465 | 1604 void* z = my_mreq(size, (flags & GMEM_ZEROINIT)); |
1605 if (z == 0) | |
1 | 1606 printf("LocalAlloc() failed\n"); |
128 | 1607 dbgprintf("LocalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); |
1 | 1608 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1609 } |
2069 | 1610 |
3465 | 1611 static void* WINAPI expLocalReAlloc(int handle,int size, int flags) |
2069 | 1612 { |
3465 | 1613 void *newpointer; |
1614 int oldsize; | |
1615 | |
1616 newpointer=NULL; | |
1617 if (flags & LMEM_MODIFY) { | |
1618 dbgprintf("LocalReAlloc MODIFY\n"); | |
1619 return (void *)handle; | |
1620 } | |
1621 oldsize = my_size((void *)handle); | |
1622 newpointer = my_realloc((void *)handle,size); | |
1623 dbgprintf("LocalReAlloc(%x %d(old %d), flags 0x%x) => 0x%x\n", handle,size,oldsize, flags,newpointer); | |
1624 | |
1625 return newpointer; | |
2069 | 1626 } |
1627 | |
3465 | 1628 static void* WINAPI expLocalLock(void* z) |
1 | 1629 { |
128 | 1630 dbgprintf("LocalLock(0x%x) => 0x%x\n", z, z); |
1 | 1631 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1632 } |
128 | 1633 |
3465 | 1634 static void* WINAPI expGlobalAlloc(int flags, int size) |
1 | 1635 { |
1636 void* z; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1637 dbgprintf("GlobalAlloc(%d, flags 0x%X)\n", size, flags); |
3465 | 1638 |
1639 z=my_mreq(size, (flags & GMEM_ZEROINIT)); | |
1640 //z=calloc(size, 1); | |
1641 //z=malloc(size); | |
1 | 1642 if(z==0) |
128 | 1643 printf("GlobalAlloc() failed\n"); |
1644 dbgprintf("GlobalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); | |
1 | 1645 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1646 } |
3465 | 1647 static void* WINAPI expGlobalLock(void* z) |
1 | 1648 { |
128 | 1649 dbgprintf("GlobalLock(0x%x) => 0x%x\n", z, z); |
1 | 1650 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1651 } |
3128 | 1652 // pvmjpg20 - but doesn't work anyway |
3465 | 1653 static int WINAPI expGlobalSize(void* amem) |
3128 | 1654 { |
1655 int size = 100000; | |
1656 #ifdef GARBAGE | |
1657 alloc_header* header = last_alloc; | |
1658 alloc_header* mem = (alloc_header*) amem - 1; | |
1659 if (amem == 0) | |
3465 | 1660 return 0; |
3128 | 1661 pthread_mutex_lock(&memmut); |
1662 while (header) | |
1663 { | |
3465 | 1664 if (header->deadbeef != 0xdeadbeef) |
1665 { | |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
1666 dbgprintf("FATAL found corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt); |
3465 | 1667 break; |
1668 } | |
1669 | |
1670 if (header == mem) | |
1671 { | |
1672 size = header->size; | |
1673 break; | |
1674 } | |
1675 | |
1676 header = header->prev; | |
3128 | 1677 } |
1678 pthread_mutex_unlock(&memmut); | |
1679 #endif | |
1680 | |
1681 dbgprintf("GlobalSize(0x%x)\n", amem); | |
1682 return size; | |
1683 } | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1684 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1685 static int WINAPI expLoadIconA( long hinstance, char *name ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1686 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1687 dbgprintf("LoadIconA( %ld, 0x%x ) => 1\n",hinstance,name); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1688 return 1; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1689 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1690 |
3465 | 1691 static int WINAPI expLoadStringA(long instance, long id, void* buf, long size) |
1 | 1692 { |
128 | 1693 int result=LoadStringA(instance, id, buf, size); |
3465 | 1694 // if(buf) |
128 | 1695 dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d ( %s )\n", |
3465 | 1696 instance, id, buf, size, result, buf); |
1697 // else | |
1698 // dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d\n", | |
1699 // instance, id, buf, size, result); | |
128 | 1700 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1701 } |
1 | 1702 |
3465 | 1703 static long WINAPI expMultiByteToWideChar(long v1, long v2, char* s1, long siz1, short* s2, int siz2) |
1 | 1704 { |
1705 #warning FIXME | |
128 | 1706 int i; |
1707 int result; | |
1 | 1708 if(s2==0) |
3465 | 1709 result=1; |
128 | 1710 else |
1711 { | |
3465 | 1712 if(siz1>siz2/2)siz1=siz2/2; |
1713 for(i=1; i<=siz1; i++) | |
1714 { | |
1715 *s2=*s1; | |
1716 if(!*s1)break; | |
1717 s2++; | |
1718 s1++; | |
1719 } | |
1720 result=i; | |
128 | 1721 } |
1722 if(s1) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1723 dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string 0x%x='%s'," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1724 "size %d, dest buffer 0x%x, dest size %d) => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1725 v1, v2, s1, s1, siz1, s2, siz2, result); |
128 | 1726 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1727 dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string NULL," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1728 "size %d, dest buffer 0x%x, dest size %d) =>\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1729 v1, v2, siz1, s2, siz2, result); |
128 | 1730 return result; |
1731 } | |
1732 static void wch_print(const short* str) | |
1733 { | |
1734 dbgprintf(" src: "); | |
1735 while(*str)dbgprintf("%c", *str++); | |
1736 dbgprintf("\n"); | |
1 | 1737 } |
3465 | 1738 static long WINAPI expWideCharToMultiByte(long v1, long v2, short* s1, long siz1, |
1739 char* s2, int siz2, char* c3, int* siz3) | |
1 | 1740 { |
1741 int result; | |
128 | 1742 dbgprintf("WideCharToMultiByte(codepage %d, flags 0x%x, src 0x%x, src size %d, " |
3465 | 1743 "dest 0x%x, dest size %d, defch 0x%x, used_defch 0x%x)", v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1 | 1744 result=WideCharToMultiByte(v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1745 dbgprintf("=> %d\n", result); | |
2069 | 1746 //if(s1)wch_print(s1); |
128 | 1747 if(s2)dbgprintf(" dest: %s\n", s2); |
1 | 1748 return result; |
1749 } | |
3465 | 1750 static long WINAPI expGetVersionExA(OSVERSIONINFOA* c) |
1 | 1751 { |
128 | 1752 dbgprintf("GetVersionExA(0x%x) => 1\n"); |
1753 c->dwOSVersionInfoSize=sizeof(*c); | |
1 | 1754 c->dwMajorVersion=4; |
128 | 1755 c->dwMinorVersion=0; |
1756 c->dwBuildNumber=0x4000457; | |
5234 | 1757 #if 1 |
2069 | 1758 // leave it here for testing win9x-only codecs |
1 | 1759 c->dwPlatformId=VER_PLATFORM_WIN32_WINDOWS; |
128 | 1760 strcpy(c->szCSDVersion, " B"); |
2069 | 1761 #else |
1762 c->dwPlatformId=VER_PLATFORM_WIN32_NT; // let's not make DLL assume that it can read CR* registers | |
1763 strcpy(c->szCSDVersion, "Service Pack 3"); | |
1764 #endif | |
128 | 1765 dbgprintf(" Major version: 4\n Minor version: 0\n Build number: 0x4000457\n" |
3465 | 1766 " Platform Id: VER_PLATFORM_WIN32_NT\n Version string: 'Service Pack 3'\n"); |
1 | 1767 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1768 } |
3465 | 1769 static HANDLE WINAPI expCreateSemaphoreA(char* v1, long init_count, |
1770 long max_count, char* name) | |
1 | 1771 { |
128 | 1772 pthread_mutex_t *pm; |
1773 pthread_cond_t *pc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1774 mutex_list* pp; |
3465 | 1775 /* |
1776 printf("CreateSemaphoreA(%p = %s)\n", name, (name ? name : "<null>")); | |
1777 pp=mlist; | |
1778 while(pp) | |
1779 { | |
1780 printf("%p => ", pp); | |
1781 pp=pp->prev; | |
1782 } | |
1783 printf("0\n"); | |
1784 */ | |
128 | 1785 if(mlist!=NULL) |
1 | 1786 { |
128 | 1787 mutex_list* pp=mlist; |
1788 if(name!=NULL) | |
3465 | 1789 do |
128 | 1790 { |
1791 if((strcmp(pp->name, name)==0) && (pp->type==1)) | |
1792 { | |
3465 | 1793 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1794 v1, init_count, max_count, name, name, mlist); | |
128 | 1795 return (HANDLE)mlist; |
1796 } | |
2069 | 1797 }while((pp=pp->prev) != NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1798 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1799 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
128 | 1800 pthread_mutex_init(pm, NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1801 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 1802 pthread_cond_init(pc, NULL); |
1803 if(mlist==NULL) | |
1804 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1805 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1806 mlist->next=mlist->prev=NULL; |
1807 } | |
1808 else | |
1 | 1809 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1810 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1811 mlist->next->prev=mlist; |
1812 mlist->next->next=NULL; | |
1813 mlist=mlist->next; | |
3465 | 1814 // printf("new semaphore %p\n", mlist); |
1 | 1815 } |
128 | 1816 mlist->type=1; /* Type Semaphore */ |
1817 mlist->pm=pm; | |
1818 mlist->pc=pc; | |
1819 mlist->state=0; | |
1820 mlist->reset=0; | |
1821 mlist->semaphore=init_count; | |
1822 if(name!=NULL) | |
3465 | 1823 strncpy(mlist->name, name, 64); |
128 | 1824 else |
1825 mlist->name[0]=0; | |
1826 if(pm==NULL) | |
1827 dbgprintf("ERROR::: CreateSemaphoreA failure\n"); | |
1828 if(name) | |
3465 | 1829 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1830 v1, init_count, max_count, name, name, mlist); | |
128 | 1831 else |
3465 | 1832 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0) => 0x%x\n", |
1833 v1, init_count, max_count, mlist); | |
128 | 1834 return (HANDLE)mlist; |
1 | 1835 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1836 |
3465 | 1837 static long WINAPI expReleaseSemaphore(long hsem, long increment, long* prev_count) |
1 | 1838 { |
3465 | 1839 // The state of a semaphore object is signaled when its count |
1840 // is greater than zero and nonsignaled when its count is equal to zero | |
1841 // Each time a waiting thread is released because of the semaphore's signaled | |
1842 // state, the count of the semaphore is decreased by one. | |
128 | 1843 mutex_list *ml = (mutex_list *)hsem; |
1 | 1844 |
128 | 1845 pthread_mutex_lock(ml->pm); |
1846 if (prev_count != 0) *prev_count = ml->semaphore; | |
1847 if (ml->semaphore == 0) pthread_cond_signal(ml->pc); | |
1848 ml->semaphore += increment; | |
1849 pthread_mutex_unlock(ml->pm); | |
1850 dbgprintf("ReleaseSemaphore(semaphore 0x%x, increment %d, prev_count 0x%x) => 1\n", | |
3465 | 1851 hsem, increment, prev_count); |
128 | 1852 return 1; |
1 | 1853 } |
1854 | |
1855 | |
3465 | 1856 static long WINAPI expRegOpenKeyExA(long key, const char* subkey, long reserved, long access, int* newkey) |
1 | 1857 { |
128 | 1858 long result=RegOpenKeyExA(key, subkey, reserved, access, newkey); |
1859 dbgprintf("RegOpenKeyExA(key 0x%x, subkey %s, reserved %d, access 0x%x, pnewkey 0x%x) => %d\n", | |
3465 | 1860 key, subkey, reserved, access, newkey, result); |
128 | 1861 if(newkey)dbgprintf(" New key: 0x%x\n", *newkey); |
1862 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1863 } |
3465 | 1864 static long WINAPI expRegCloseKey(long key) |
1 | 1865 { |
128 | 1866 long result=RegCloseKey(key); |
1867 dbgprintf("RegCloseKey(0x%x) => %d\n", key, result); | |
1868 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1869 } |
3465 | 1870 static long WINAPI expRegQueryValueExA(long key, const char* value, int* reserved, int* type, int* data, int* count) |
1 | 1871 { |
128 | 1872 long result=RegQueryValueExA(key, value, reserved, type, data, count); |
1873 dbgprintf("RegQueryValueExA(key 0x%x, value %s, reserved 0x%x, data 0x%x, count 0x%x)" | |
3465 | 1874 " => 0x%x\n", key, value, reserved, data, count, result); |
128 | 1875 if(data && count)dbgprintf(" read %d bytes: '%s'\n", *count, data); |
1876 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1877 } |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1878 |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1879 //from wine source dlls/advapi32/registry.c |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1880 static long WINAPI expRegCreateKeyA(long hkey, const char* name, int *retkey) |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1881 { |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1882 dbgprintf("RegCreateKeyA(key 0x%x, name 0x%x='%s',newkey=0x%x)\n",hkey,name,retkey); |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1883 return RegCreateKeyExA( hkey, name, 0, NULL,REG_OPTION_NON_VOLATILE, |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1884 KEY_ALL_ACCESS , NULL, retkey, NULL ); |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1885 } |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1886 |
3465 | 1887 static long WINAPI expRegCreateKeyExA(long key, const char* name, long reserved, |
1888 void* classs, long options, long security, | |
1889 void* sec_attr, int* newkey, int* status) | |
1 | 1890 { |
128 | 1891 long result=RegCreateKeyExA(key, name, reserved, classs, options, security, sec_attr, newkey, status); |
1892 dbgprintf("RegCreateKeyExA(key 0x%x, name 0x%x='%s', reserved=0x%x," | |
3465 | 1893 " 0x%x, 0x%x, 0x%x, newkey=0x%x, status=0x%x) => %d\n", |
1894 key, name, name, reserved, classs, options, security, sec_attr, newkey, status, result); | |
128 | 1895 if(!result && newkey) dbgprintf(" New key: 0x%x\n", *newkey); |
1896 if(!result && status) dbgprintf(" New key status: 0x%x\n", *status); | |
1897 return result; | |
1 | 1898 } |
3465 | 1899 static long WINAPI expRegSetValueExA(long key, const char* name, long v1, long v2, void* data, long size) |
1 | 1900 { |
128 | 1901 long result=RegSetValueExA(key, name, v1, v2, data, size); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1902 dbgprintf("RegSetValueExA(key 0x%x, name '%s', 0x%x, 0x%x, data 0x%x -> 0x%x '%s', size=%d) => %d", |
3465 | 1903 key, name, v1, v2, data, *(int*)data, data, size, result); |
128 | 1904 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1905 } |
1 | 1906 |
3465 | 1907 static long WINAPI expRegOpenKeyA (long hKey, LPCSTR lpSubKey, int* phkResult) |
3134 | 1908 { |
128 | 1909 long result=RegOpenKeyExA(hKey, lpSubKey, 0, 0, phkResult); |
1910 dbgprintf("RegOpenKeyExA(key 0x%x, subkey '%s', 0x%x) => %d\n", | |
3465 | 1911 hKey, lpSubKey, phkResult, result); |
128 | 1912 if(!result && phkResult) dbgprintf(" New key: 0x%x\n", *phkResult); |
1913 return result; | |
1 | 1914 } |
1915 | |
3465 | 1916 static DWORD WINAPI expRegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count, |
1917 LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count) | |
2069 | 1918 { |
1919 return RegEnumValueA(hkey, index, value, val_count, | |
1920 reserved, type, data, count); | |
1921 } | |
1922 | |
3465 | 1923 static DWORD WINAPI expRegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, |
1924 LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, | |
1925 LPFILETIME lpftLastWriteTime) | |
1926 { | |
1927 return RegEnumKeyExA(hKey, dwIndex, lpName, lpcbName, lpReserved, lpClass, | |
1928 lpcbClass, lpftLastWriteTime); | |
1929 } | |
1930 | |
1931 static long WINAPI expQueryPerformanceCounter(long long* z) | |
1 | 1932 { |
1933 longcount(z); | |
128 | 1934 dbgprintf("QueryPerformanceCounter(0x%x) => 1 ( %Ld )\n", z, *z); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1935 return 1; |
1 | 1936 } |
1937 | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1938 /* |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1939 * dummy function RegQueryInfoKeyA(), required by vss codecs |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1940 */ |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1941 static DWORD WINAPI expRegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWORD reserved, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1942 LPDWORD subkeys, LPDWORD max_subkey, LPDWORD max_class, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1943 LPDWORD values, LPDWORD max_value, LPDWORD max_data, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1944 LPDWORD security, FILETIME *modif ) |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1945 { |
13182 | 1946 return ERROR_SUCCESS; |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1947 } |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1948 |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1949 /* |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1950 * return CPU clock (in kHz), using linux's /proc filesystem (/proc/cpuinfo) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1951 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1952 static double linux_cpuinfo_freq() |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1953 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1954 double freq=-1; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1955 FILE *f; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1956 char line[200]; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1957 char *s,*value; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1958 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1959 f = fopen ("/proc/cpuinfo", "r"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1960 if (f != NULL) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1961 while (fgets(line,sizeof(line),f)!=NULL) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1962 /* NOTE: the ':' is the only character we can rely on */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1963 if (!(value = strchr(line,':'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1964 continue; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1965 /* terminate the valuename */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1966 *value++ = '\0'; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1967 /* skip any leading spaces */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1968 while (*value==' ') value++; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1969 if ((s=strchr(value,'\n'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1970 *s='\0'; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1971 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1972 if (!strncasecmp(line, "cpu MHz",strlen("cpu MHz")) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1973 && sscanf(value, "%lf", &freq) == 1) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1974 freq*=1000; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1975 break; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1976 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1977 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1978 fclose(f); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1979 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1980 return freq; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1981 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1982 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1983 |
3465 | 1984 static double solaris_kstat_freq() |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1985 { |
1679
73c8f54305b1
Add a few ifdefs, so that the code compiles on old solaris releases (2.6 and 7)
jkeil
parents:
1543
diff
changeset
|
1986 #if defined(HAVE_LIBKSTAT) && defined(KSTAT_DATA_INT32) |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1987 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1988 * try to extract the CPU speed from the solaris kernel's kstat data |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1989 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1990 kstat_ctl_t *kc; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1991 kstat_t *ksp; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1992 kstat_named_t *kdata; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1993 int mhz = 0; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1994 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1995 kc = kstat_open(); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1996 if (kc != NULL) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1997 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1998 ksp = kstat_lookup(kc, "cpu_info", 0, "cpu_info0"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1999 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2000 /* kstat found and name/value pairs? */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2001 if (ksp != NULL && ksp->ks_type == KSTAT_TYPE_NAMED) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2002 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2003 /* read the kstat data from the kernel */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2004 if (kstat_read(kc, ksp, NULL) != -1) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2005 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2006 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2007 * lookup desired "clock_MHz" entry, check the expected |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2008 * data type |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2009 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2010 kdata = (kstat_named_t *)kstat_data_lookup(ksp, "clock_MHz"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2011 if (kdata != NULL && kdata->data_type == KSTAT_DATA_INT32) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2012 mhz = kdata->value.i32; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2013 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2014 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2015 kstat_close(kc); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2016 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2017 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2018 if (mhz > 0) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2019 return mhz * 1000.; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2020 #endif /* HAVE_LIBKSTAT */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2021 return -1; // kstat stuff is not available, CPU freq is unknown |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2022 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2023 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2024 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2025 * Measure CPU freq using the pentium's time stamp counter register (TSC) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2026 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2027 static double tsc_freq() |
1 | 2028 { |
128 | 2029 static double ofreq=0.0; |
2030 int i; | |
1 | 2031 int x,y; |
128 | 2032 i=time(NULL); |
2033 if (ofreq != 0.0) return ofreq; | |
1 | 2034 while(i==time(NULL)); |
2035 x=localcount(); | |
2036 i++; | |
2037 while(i==time(NULL)); | |
2038 y=localcount(); | |
128 | 2039 ofreq = (double)(y-x)/1000.; |
2040 return ofreq; | |
1 | 2041 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2042 |
1 | 2043 static double CPU_Freq() |
2044 { | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2045 double freq; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2046 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2047 if ((freq = linux_cpuinfo_freq()) > 0) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2048 return freq; |
1 | 2049 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2050 if ((freq = solaris_kstat_freq()) > 0) |
1 | 2051 return freq; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2052 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2053 return tsc_freq(); |
1 | 2054 } |
2055 | |
3465 | 2056 static long WINAPI expQueryPerformanceFrequency(long long* z) |
1 | 2057 { |
2058 *z=(long long)CPU_Freq(); | |
128 | 2059 dbgprintf("QueryPerformanceFrequency(0x%x) => 1 ( %Ld )\n", z, *z); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2060 return 1; |
1 | 2061 } |
3465 | 2062 static long WINAPI exptimeGetTime() |
1 | 2063 { |
2064 struct timeval t; | |
128 | 2065 long result; |
1 | 2066 gettimeofday(&t, 0); |
128 | 2067 result=1000*t.tv_sec+t.tv_usec/1000; |
2068 dbgprintf("timeGetTime() => %d\n", result); | |
2069 return result; | |
1 | 2070 } |
3465 | 2071 static void* WINAPI expLocalHandle(void* v) |
1 | 2072 { |
128 | 2073 dbgprintf("LocalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2074 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2075 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2076 |
3465 | 2077 static void* WINAPI expGlobalHandle(void* v) |
1 | 2078 { |
128 | 2079 dbgprintf("GlobalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2080 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2081 } |
3465 | 2082 static int WINAPI expGlobalUnlock(void* v) |
1 | 2083 { |
128 | 2084 dbgprintf("GlobalUnlock(0x%x) => 1\n", v); |
1 | 2085 return 1; |
2086 } | |
3465 | 2087 static void* WINAPI expGlobalFree(void* v) |
1 | 2088 { |
128 | 2089 dbgprintf("GlobalFree(0x%x) => 0\n", v); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2090 my_release(v); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2091 //free(v); |
1 | 2092 return 0; |
128 | 2093 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2094 |
3465 | 2095 static void* WINAPI expGlobalReAlloc(void* v, int size, int flags) |
128 | 2096 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2097 void* result=my_realloc(v, size); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2098 //void* result=realloc(v, size); |
128 | 2099 dbgprintf("GlobalReAlloc(0x%x, size %d, flags 0x%x) => 0x%x\n", v,size,flags,result); |
2100 return result; | |
2101 } | |
1 | 2102 |
3465 | 2103 static int WINAPI expLocalUnlock(void* v) |
1 | 2104 { |
128 | 2105 dbgprintf("LocalUnlock(0x%x) => 1\n", v); |
1 | 2106 return 1; |
2107 } | |
3465 | 2108 // |
2109 static void* WINAPI expLocalFree(void* v) | |
1 | 2110 { |
128 | 2111 dbgprintf("LocalFree(0x%x) => 0\n", v); |
1 | 2112 my_release(v); |
2113 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2114 } |
3465 | 2115 static HRSRC WINAPI expFindResourceA(HMODULE module, char* name, char* type) |
1 | 2116 { |
3465 | 2117 HRSRC result; |
2118 | |
2119 result=FindResourceA(module, name, type); | |
4545 | 2120 dbgprintf("FindResourceA(module 0x%x, name 0x%x(%s), type 0x%x(%s)) => 0x%x\n", |
2121 module, name, HIWORD(name) ? name : "UNICODE", type, HIWORD(type) ? type : "UNICODE", result); | |
128 | 2122 return result; |
1 | 2123 } |
3465 | 2124 |
128 | 2125 extern HRSRC WINAPI LoadResource(HMODULE, HRSRC); |
3465 | 2126 static HGLOBAL WINAPI expLoadResource(HMODULE module, HRSRC res) |
1 | 2127 { |
128 | 2128 HGLOBAL result=LoadResource(module, res); |
2129 dbgprintf("LoadResource(module 0x%x, resource 0x%x) => 0x%x\n", module, res, result); | |
2130 return result; | |
1 | 2131 } |
3465 | 2132 static void* WINAPI expLockResource(long res) |
1 | 2133 { |
128 | 2134 void* result=LockResource(res); |
2135 dbgprintf("LockResource(0x%x) => 0x%x\n", res, result); | |
2136 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2137 } |
3465 | 2138 static int WINAPI expFreeResource(long res) |
1 | 2139 { |
128 | 2140 int result=FreeResource(res); |
2141 dbgprintf("FreeResource(0x%x) => %d\n", res, result); | |
2142 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2143 } |
1 | 2144 //bool fun(HANDLE) |
2145 //!0 on success | |
3465 | 2146 static int WINAPI expCloseHandle(long v1) |
1 | 2147 { |
128 | 2148 dbgprintf("CloseHandle(0x%x) => 1\n", v1); |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2149 /* do not close stdin,stdout and stderr */ |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2150 if (v1 > 2) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2151 if (!close(v1)) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2152 return 0; |
1 | 2153 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2154 } |
1 | 2155 |
3465 | 2156 static const char* WINAPI expGetCommandLineA() |
1 | 2157 { |
128 | 2158 dbgprintf("GetCommandLineA() => \"c:\\aviplay.exe\"\n"); |
1 | 2159 return "c:\\aviplay.exe"; |
2160 } | |
128 | 2161 static short envs[]={'p', 'a', 't', 'h', ' ', 'c', ':', '\\', 0, 0}; |
3465 | 2162 static LPWSTR WINAPI expGetEnvironmentStringsW() |
1 | 2163 { |
3465 | 2164 dbgprintf("GetEnvironmentStringsW() => 0\n", envs); |
2165 return 0; | |
1 | 2166 } |
3465 | 2167 static void * WINAPI expRtlZeroMemory(void *p, size_t len) |
121 | 2168 { |
2169 void* result=memset(p,0,len); | |
2170 dbgprintf("RtlZeroMemory(0x%x, len %d) => 0x%x\n",p,len,result); | |
2171 return result; | |
2172 } | |
3465 | 2173 static void * WINAPI expRtlMoveMemory(void *dst, void *src, size_t len) |
121 | 2174 { |
2175 void* result=memmove(dst,src,len); | |
2176 dbgprintf("RtlMoveMemory (dest 0x%x, src 0x%x, len %d) => 0x%x\n",dst,src,len,result); | |
2177 return result; | |
2178 } | |
2179 | |
3465 | 2180 static void * WINAPI expRtlFillMemory(void *p, int ch, size_t len) |
121 | 2181 { |
2182 void* result=memset(p,ch,len); | |
2183 dbgprintf("RtlFillMemory(0x%x, char 0x%x, len %d) => 0x%x\n",p,ch,len,result); | |
2184 return result; | |
2185 } | |
3465 | 2186 static int WINAPI expFreeEnvironmentStringsW(short* strings) |
1 | 2187 { |
128 | 2188 dbgprintf("FreeEnvironmentStringsW(0x%x) => 1\n", strings); |
1 | 2189 return 1; |
2190 } | |
3465 | 2191 static int WINAPI expFreeEnvironmentStringsA(char* strings) |
128 | 2192 { |
3465 | 2193 dbgprintf("FreeEnvironmentStringsA(0x%x) => 1\n", strings); |
2194 return 1; | |
128 | 2195 } |
3465 | 2196 |
128 | 2197 static const char ch_envs[]= |
3465 | 2198 "__MSVCRT_HEAP_SELECT=__GLOBAL_HEAP_SELECTED,1\r\n" |
2199 "PATH=C:\\;C:\\windows\\;C:\\windows\\system\r\n"; | |
2200 static LPCSTR WINAPI expGetEnvironmentStrings() | |
1 | 2201 { |
128 | 2202 dbgprintf("GetEnvironmentStrings() => 0x%x\n", ch_envs); |
2203 return (LPCSTR)ch_envs; | |
3465 | 2204 // dbgprintf("GetEnvironmentStrings() => 0\n"); |
2205 // return 0; | |
1 | 2206 } |
2207 | |
3465 | 2208 static int WINAPI expGetStartupInfoA(STARTUPINFOA *s) |
1 | 2209 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2210 int i; |
128 | 2211 dbgprintf("GetStartupInfoA(0x%x) => 1\n"); |
1 | 2212 memset(s, 0, sizeof(*s)); |
2213 s->cb=sizeof(*s); | |
3465 | 2214 // s->lpReserved="Reserved"; |
2215 // s->lpDesktop="Desktop"; | |
2216 // s->lpTitle="Title"; | |
2217 // s->dwX=s->dwY=0; | |
2218 // s->dwXSize=s->dwYSize=200; | |
2219 s->dwFlags=s->wShowWindow=1; | |
2220 // s->hStdInput=s->hStdOutput=s->hStdError=0x1234; | |
128 | 2221 dbgprintf(" cb=%d\n", s->cb); |
2222 dbgprintf(" lpReserved='%s'\n", s->lpReserved); | |
2223 dbgprintf(" lpDesktop='%s'\n", s->lpDesktop); | |
2224 dbgprintf(" lpTitle='%s'\n", s->lpTitle); | |
2225 dbgprintf(" dwX=%d dwY=%d dwXSize=%d dwYSize=%d\n", | |
3465 | 2226 s->dwX, s->dwY, s->dwXSize, s->dwYSize); |
128 | 2227 dbgprintf(" dwXCountChars=%d dwYCountChars=%d dwFillAttribute=%d\n", |
3465 | 2228 s->dwXCountChars, s->dwYCountChars, s->dwFillAttribute); |
128 | 2229 dbgprintf(" dwFlags=0x%x wShowWindow=0x%x cbReserved2=0x%x\n", |
3465 | 2230 s->dwFlags, s->wShowWindow, s->cbReserved2); |
128 | 2231 dbgprintf(" lpReserved2=0x%x hStdInput=0x%x hStdOutput=0x%x hStdError=0x%x\n", |
3465 | 2232 s->lpReserved2, s->hStdInput, s->hStdOutput, s->hStdError); |
1 | 2233 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2234 } |
1 | 2235 |
3465 | 2236 static int WINAPI expGetStdHandle(int z) |
1 | 2237 { |
3465 | 2238 dbgprintf("GetStdHandle(0x%x) => 0x%x\n", z+0x1234); |
2239 return z+0x1234; | |
1 | 2240 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2241 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2242 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2243 #define FILE_HANDLE_quicktimeqts ((HANDLE)0x444) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2244 #define FILE_HANDLE_quicktimeqtx ((HANDLE)0x445) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2245 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2246 |
3465 | 2247 static int WINAPI expGetFileType(int handle) |
1 | 2248 { |
3465 | 2249 dbgprintf("GetFileType(0x%x) => 0x3 = pipe\n", handle); |
2250 return 0x3; | |
1 | 2251 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2252 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2253 static int WINAPI expGetFileAttributesA(char *filename) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2254 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2255 dbgprintf("GetFileAttributesA(%s) => FILE_ATTR_NORMAL\n", filename); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2256 if (strstr(filename, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2257 return FILE_ATTRIBUTE_SYSTEM; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2258 return FILE_ATTRIBUTE_NORMAL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2259 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2260 #endif |
3465 | 2261 static int WINAPI expSetHandleCount(int count) |
1 | 2262 { |
128 | 2263 dbgprintf("SetHandleCount(0x%x) => 1\n", count); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2264 return 1; |
1 | 2265 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2266 static int WINAPI expGetACP(void) |
1 | 2267 { |
128 | 2268 dbgprintf("GetACP() => 0\n"); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2269 return 0; |
1 | 2270 } |
2271 extern WINE_MODREF *MODULE32_LookupHMODULE(HMODULE m); | |
3465 | 2272 static int WINAPI expGetModuleFileNameA(int module, char* s, int len) |
1 | 2273 { |
2274 WINE_MODREF *mr; | |
128 | 2275 int result; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2276 //printf("File name of module %X (%s) requested\n", module, s); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2277 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2278 if (module == 0 && len >= 12) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2279 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2280 /* return caller program name */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2281 strcpy(s, "aviplay.dll"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2282 result=1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2283 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2284 else if(s==0) |
128 | 2285 result=0; |
2286 else | |
3465 | 2287 if(len<35) |
2288 result=0; | |
128 | 2289 else |
3465 | 2290 { |
2291 result=1; | |
2292 strcpy(s, "c:\\windows\\system\\"); | |
2293 mr=MODULE32_LookupHMODULE(module); | |
2294 if(mr==0)//oops | |
2295 strcat(s, "aviplay.dll"); | |
2296 else | |
2297 if(strrchr(mr->filename, '/')==NULL) | |
2298 strcat(s, mr->filename); | |
2299 else | |
2300 strcat(s, strrchr(mr->filename, '/')+1); | |
2301 } | |
128 | 2302 if(!s) |
3465 | 2303 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d\n", |
2304 module, s, len, result); | |
1 | 2305 else |
3465 | 2306 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d ( '%s' )\n", |
2307 module, s, len, result, s); | |
128 | 2308 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2309 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2310 |
3465 | 2311 static int WINAPI expSetUnhandledExceptionFilter(void* filter) |
1 | 2312 { |
128 | 2313 dbgprintf("SetUnhandledExceptionFilter(0x%x) => 1\n", filter); |
1 | 2314 return 1;//unsupported and probably won't ever be supported |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2315 } |
2069 | 2316 |
3465 | 2317 static int WINAPI expLoadLibraryA(char* name) |
1 | 2318 { |
2069 | 2319 int result = 0; |
713 | 2320 char* lastbc; |
2069 | 2321 int i; |
713 | 2322 if (!name) |
2323 return -1; | |
2324 // we skip to the last backslash | |
2325 // this is effectively eliminating weird characters in | |
2326 // the text output windows | |
2069 | 2327 |
713 | 2328 lastbc = strrchr(name, '\\'); |
2329 if (lastbc) | |
2330 { | |
3465 | 2331 int i; |
2332 lastbc++; | |
713 | 2333 for (i = 0; 1 ;i++) |
2334 { | |
2335 name[i] = *lastbc++; | |
2336 if (!name[i]) | |
2337 break; | |
2338 } | |
2339 } | |
2069 | 2340 if(strncmp(name, "c:\\windows\\", 11)==0) name += 11; |
1416 | 2341 if(strncmp(name, ".\\", 2)==0) name += 2; |
2069 | 2342 |
2343 dbgprintf("Entering LoadLibraryA(%s)\n", name); | |
3465 | 2344 |
3440 | 2345 // PIMJ and VIVO audio are loading kernel32.dll |
2346 if (strcasecmp(name, "kernel32.dll") == 0 || strcasecmp(name, "kernel32") == 0) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2347 return MODULE_HANDLE_kernel32; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2348 // return ERROR_SUCCESS; /* yeah, we have also the kernel32 calls */ |
3457 | 2349 /* exported -> do not return failed! */ |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2350 |
5234 | 2351 if (strcasecmp(name, "user32.dll") == 0 || strcasecmp(name, "user32") == 0) |
2352 // return MODULE_HANDLE_kernel32; | |
2353 return MODULE_HANDLE_user32; | |
2354 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2355 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2356 if (strcasecmp(name, "wininet.dll") == 0 || strcasecmp(name, "wininet") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2357 return MODULE_HANDLE_wininet; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2358 if (strcasecmp(name, "ddraw.dll") == 0 || strcasecmp(name, "ddraw") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2359 return MODULE_HANDLE_ddraw; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2360 if (strcasecmp(name, "advapi32.dll") == 0 || strcasecmp(name, "advapi32") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2361 return MODULE_HANDLE_advapi32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2362 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2363 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2364 if (strcasecmp(name, "comdlg32.dll") == 0 || strcasecmp(name, "comdlg32") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2365 return MODULE_HANDLE_comdlg32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2366 if (strcasecmp(name, "msvcrt.dll") == 0 || strcasecmp(name, "msvcrt") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2367 return MODULE_HANDLE_msvcrt; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2368 if (strcasecmp(name, "ole32.dll") == 0 || strcasecmp(name, "ole32") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2369 return MODULE_HANDLE_ole32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2370 if (strcasecmp(name, "winmm.dll") == 0 || strcasecmp(name, "winmm") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2371 return MODULE_HANDLE_winmm; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2372 |
2069 | 2373 result=LoadLibraryA(name); |
2374 dbgprintf("Returned LoadLibraryA(0x%x='%s'), def_path=%s => 0x%x\n", name, name, def_path, result); | |
2375 | |
128 | 2376 return result; |
2069 | 2377 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2378 |
3465 | 2379 static int WINAPI expFreeLibrary(int module) |
1 | 2380 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2381 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2382 int result=0; /* FIXME:XXX: qtx svq3 frees up qt.qts */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2383 #else |
128 | 2384 int result=FreeLibrary(module); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2385 #endif |
128 | 2386 dbgprintf("FreeLibrary(0x%x) => %d\n", module, result); |
2387 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2388 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2389 |
3465 | 2390 static void* WINAPI expGetProcAddress(HMODULE mod, char* name) |
1 | 2391 { |
2069 | 2392 void* result; |
5234 | 2393 switch(mod){ |
2394 case MODULE_HANDLE_kernel32: | |
2395 result=LookupExternalByName("kernel32.dll", name); break; | |
2396 case MODULE_HANDLE_user32: | |
2397 result=LookupExternalByName("user32.dll", name); break; | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2398 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2399 case MODULE_HANDLE_wininet: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2400 result=LookupExternalByName("wininet.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2401 case MODULE_HANDLE_ddraw: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2402 result=LookupExternalByName("ddraw.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2403 case MODULE_HANDLE_advapi32: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2404 result=LookupExternalByName("advapi32.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2405 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2406 case MODULE_HANDLE_comdlg32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2407 result=LookupExternalByName("comdlg32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2408 case MODULE_HANDLE_msvcrt: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2409 result=LookupExternalByName("msvcrt.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2410 case MODULE_HANDLE_ole32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2411 result=LookupExternalByName("ole32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2412 case MODULE_HANDLE_winmm: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2413 result=LookupExternalByName("winmm.dll", name); break; |
5234 | 2414 default: |
128 | 2415 result=GetProcAddress(mod, name); |
5234 | 2416 } |
128 | 2417 dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result); |
2418 return result; | |
2069 | 2419 } |
1 | 2420 |
3465 | 2421 static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr, |
2422 long flProtect, long dwMaxHigh, | |
2423 long dwMaxLow, const char* name) | |
1 | 2424 { |
128 | 2425 long result=CreateFileMappingA(hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name); |
2426 if(!name) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2427 dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2428 "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0) => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2429 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, result); |
128 | 2430 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2431 dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2432 "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0x%x='%s') => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2433 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name, name, result); |
128 | 2434 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2435 } |
1 | 2436 |
3465 | 2437 static long WINAPI expOpenFileMappingA(long hFile, long hz, const char* name) |
1 | 2438 { |
128 | 2439 long result=OpenFileMappingA(hFile, hz, name); |
2440 if(!name) | |
2441 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0) => %d\n", | |
3465 | 2442 hFile, hz, result); |
128 | 2443 else |
2444 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0x%x='%s') => %d\n", | |
3465 | 2445 hFile, hz, name, name, result); |
128 | 2446 return result; |
1 | 2447 } |
2448 | |
3465 | 2449 static void* WINAPI expMapViewOfFile(HANDLE file, DWORD mode, DWORD offHigh, |
2450 DWORD offLow, DWORD size) | |
1 | 2451 { |
128 | 2452 dbgprintf("MapViewOfFile(0x%x, 0x%x, 0x%x, 0x%x, size %d) => 0x%x\n", |
3465 | 2453 file,mode,offHigh,offLow,size,(char*)file+offLow); |
1 | 2454 return (char*)file+offLow; |
2455 } | |
2456 | |
3465 | 2457 static void* WINAPI expUnmapViewOfFile(void* view) |
1 | 2458 { |
128 | 2459 dbgprintf("UnmapViewOfFile(0x%x) => 0\n", view); |
1 | 2460 return 0; |
2461 } | |
2462 | |
3465 | 2463 static void* WINAPI expSleep(int time) |
2464 { | |
2465 #if HAVE_NANOSLEEP | |
2466 /* solaris doesn't have thread safe usleep */ | |
2467 struct timespec tsp; | |
2468 tsp.tv_sec = time / 1000000; | |
2469 tsp.tv_nsec = (time % 1000000) * 1000; | |
2470 nanosleep(&tsp, NULL); | |
2471 #else | |
2472 usleep(time); | |
2473 #endif | |
2474 dbgprintf("Sleep(%d) => 0\n", time); | |
2475 return 0; | |
2476 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2477 |
3465 | 2478 // why does IV32 codec want to call this? I don't know ... |
2479 static int WINAPI expCreateCompatibleDC(int hdc) | |
1 | 2480 { |
3465 | 2481 int dc = 0;//0x81; |
2482 //dbgprintf("CreateCompatibleDC(%d) => 0x81\n", hdc); | |
2483 dbgprintf("CreateCompatibleDC(%d) => %d\n", hdc, dc); | |
2484 return dc; | |
2485 } | |
2486 | |
2487 static int WINAPI expGetDeviceCaps(int hdc, int unk) | |
2488 { | |
2489 dbgprintf("GetDeviceCaps(0x%x, %d) => 0\n", hdc, unk); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2490 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2491 #define BITSPIXEL 12 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2492 #define PLANES 14 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2493 if (unk == BITSPIXEL) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2494 return 24; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2495 if (unk == PLANES) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2496 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2497 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2498 return 1; |
3465 | 2499 } |
2500 | |
2501 static WIN_BOOL WINAPI expDeleteDC(int hdc) | |
2502 { | |
2503 dbgprintf("DeleteDC(0x%x) => 0\n", hdc); | |
2504 if (hdc == 0x81) | |
2505 return 1; | |
1 | 2506 return 0; |
2507 } | |
3465 | 2508 |
2509 static WIN_BOOL WINAPI expDeleteObject(int hdc) | |
1 | 2510 { |
3465 | 2511 dbgprintf("DeleteObject(0x%x) => 1\n", hdc); |
2512 /* FIXME - implement code here */ | |
2513 return 1; | |
1 | 2514 } |
2515 | |
3465 | 2516 /* btvvc32.drv wants this one */ |
2517 static void* WINAPI expGetWindowDC(int hdc) | |
1 | 2518 { |
3465 | 2519 dbgprintf("GetWindowDC(%d) => 0x0\n", hdc); |
3128 | 2520 return 0; |
2521 } | |
2522 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2523 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2524 static int WINAPI expGetWindowRect(HWND win, RECT *r) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2525 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2526 dbgprintf("GetWindowRect(0x%x, 0x%x) => 1\n", win, r); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2527 /* (win == 0) => desktop */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2528 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2529 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2530 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2531 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2532 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2533 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2534 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2535 static int WINAPI expMonitorFromWindow(HWND win, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2536 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2537 dbgprintf("MonitorFromWindow(0x%x, 0x%x) => 0\n", win, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2538 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2539 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2540 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2541 static int WINAPI expMonitorFromRect(RECT *r, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2542 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2543 dbgprintf("MonitorFromRect(0x%x, 0x%x) => 0\n", r, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2544 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2545 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2546 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2547 static int WINAPI expMonitorFromPoint(void *p, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2548 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2549 dbgprintf("MonitorFromPoint(0x%x, 0x%x) => 0\n", p, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2550 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2551 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2552 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2553 static int WINAPI expEnumDisplayMonitors(void *dc, RECT *r, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2554 int WINAPI (*callback_proc)(), void *callback_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2555 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2556 dbgprintf("EnumDisplayMonitors(0x%x, 0x%x, 0x%x, 0x%x) => ?\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2557 dc, r, callback_proc, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2558 return callback_proc(0, dc, r, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2559 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2560 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2561 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2562 typedef struct tagMONITORINFO { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2563 DWORD cbSize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2564 RECT rcMonitor; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2565 RECT rcWork; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2566 DWORD dwFlags; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2567 } MONITORINFO, *LPMONITORINFO; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2568 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2569 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2570 #define CCHDEVICENAME 8 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2571 typedef struct tagMONITORINFOEX { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2572 DWORD cbSize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2573 RECT rcMonitor; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2574 RECT rcWork; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2575 DWORD dwFlags; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2576 TCHAR szDevice[CCHDEVICENAME]; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2577 } MONITORINFOEX, *LPMONITORINFOEX; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2578 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2579 static int WINAPI expGetMonitorInfoA(void *mon, LPMONITORINFO lpmi) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2580 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2581 dbgprintf("GetMonitorInfoA(0x%x, 0x%x) => 1\n", mon, lpmi); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2582 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2583 lpmi->rcMonitor.right = lpmi->rcWork.right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2584 lpmi->rcMonitor.left = lpmi->rcWork.left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2585 lpmi->rcMonitor.bottom = lpmi->rcWork.bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2586 lpmi->rcMonitor.top = lpmi->rcWork.top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2587 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2588 lpmi->dwFlags = 1; /* primary monitor */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2589 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2590 if (lpmi->cbSize == sizeof(MONITORINFOEX)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2591 { |
8451 | 2592 LPMONITORINFOEX lpmiex = (LPMONITORINFOEX)lpmi; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2593 dbgprintf("MONITORINFOEX!\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2594 strncpy(lpmiex->szDevice, "Monitor1", CCHDEVICENAME); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2595 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2596 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2597 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2598 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2599 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2600 static int WINAPI expEnumDisplayDevicesA(const char *device, int devnum, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2601 void *dispdev, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2602 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2603 dbgprintf("EnumDisplayDevicesA(0x%x = %s, %d, 0x%x, %x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2604 device, device, devnum, dispdev, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2605 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2606 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2607 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2608 static int WINAPI expIsWindowVisible(HWND win) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2609 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2610 dbgprintf("IsWindowVisible(0x%x) => 1\n", win); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2611 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2612 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2613 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2614 static HWND WINAPI expGetActiveWindow(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2615 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2616 dbgprintf("GetActiveWindow() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2617 return (HWND)0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2618 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2619 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2620 static int WINAPI expGetClassNameA(HWND win, LPTSTR classname, int maxcount) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2621 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2622 strncat(classname, "QuickTime", maxcount); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2623 dbgprintf("GetClassNameA(0x%x, 0x%x, %d) => %d\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2624 win, classname, maxcount, strlen(classname)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2625 return strlen(classname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2626 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2627 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2628 #define LPWNDCLASS void * |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2629 static int WINAPI expGetClassInfoA(HINSTANCE inst, LPCSTR classname, LPWNDCLASS wndclass) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2630 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2631 dbgprintf("GetClassInfoA(0x%x, 0x%x = %s, 0x%x) => 1\n", inst, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2632 classname, classname, wndclass); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2633 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2634 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2635 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2636 static int WINAPI expGetWindowLongA(HWND win, int index) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2637 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2638 dbgprintf("GetWindowLongA(0x%x, %d) => 0\n", win, index); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2639 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2640 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2641 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2642 static int WINAPI expGetObjectA(HGDIOBJ hobj, int objsize, LPVOID obj) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2643 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2644 dbgprintf("GetObjectA(0x%x, %d, 0x%x) => %d\n", hobj, objsize, obj, objsize); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2645 return objsize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2646 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2647 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2648 static int WINAPI expCreateRectRgn(int x, int y, int width, int height) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2649 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2650 dbgprintf("CreateRectRgn(%d, %d, %d, %d) => 0\n", x, y, width, height); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2651 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2652 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2653 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2654 static int WINAPI expEnumWindows(int (*callback_func)(), void *callback_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2655 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2656 int i, i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2657 dbgprintf("EnumWindows(0x%x, 0x%x) => 1\n", callback_func, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2658 i = callback_func(0, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2659 i2 = callback_func(1, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2660 return i && i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2661 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2662 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2663 static int WINAPI expGetWindowThreadProcessId(HWND win, int *pid_data) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2664 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2665 int tid = pthread_self(); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2666 dbgprintf("GetWindowThreadProcessId(0x%x, 0x%x) => %d\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2667 win, pid_data, tid); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2668 if (pid_data) |
12374 | 2669 *(int*)pid_data = tid; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2670 return tid; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2671 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2672 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2673 //HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,INT,INT, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2674 // INT,INT,HWND,HMENU,HINSTANCE,LPVOID); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2675 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2676 static HWND WINAPI expCreateWindowExA(int exstyle, const char *classname, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2677 const char *winname, int style, int x, int y, int w, int h, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2678 HWND parent, HMENU menu, HINSTANCE inst, LPVOID param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2679 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2680 printf("CreateWindowEx() called\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2681 dbgprintf("CreateWindowEx(%d, 0x%x = %s, 0x%x = %s, %d, %d, %d, %d, %d, 0x%x, 0x%x, 0x%x, 0x%x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2682 exstyle, classname, classname, winname, winname, style, x, y, w, h, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2683 parent, menu, inst, param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2684 printf("CreateWindowEx() called okey\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2685 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2686 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2687 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2688 static int WINAPI expwaveOutGetNumDevs(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2689 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2690 dbgprintf("waveOutGetNumDevs() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2691 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2692 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2693 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2694 |
3465 | 2695 /* |
2696 * Returns the number of milliseconds, modulo 2^32, since the start | |
2697 * of the wineserver. | |
2698 */ | |
2699 static int WINAPI expGetTickCount(void) | |
1 | 2700 { |
3465 | 2701 static int tcstart = 0; |
2702 struct timeval t; | |
2703 int tc; | |
2704 gettimeofday( &t, NULL ); | |
2705 tc = ((t.tv_sec * 1000) + (t.tv_usec / 1000)) - tcstart; | |
2706 if (tcstart == 0) | |
2707 { | |
2708 tcstart = 0; | |
2709 tc = 0; | |
2710 } | |
2711 dbgprintf("GetTickCount() => %d\n", tc); | |
2712 return tc; | |
1 | 2713 } |
2714 | |
3465 | 2715 static int WINAPI expCreateFontA(void) |
2716 { | |
2717 dbgprintf("CreateFontA() => 0x0\n"); | |
2718 return 1; | |
2719 } | |
2720 | |
2721 /* tried to get pvmjpg work in a different way - no success */ | |
2722 static int WINAPI expDrawTextA(int hDC, char* lpString, int nCount, | |
2723 LPRECT lpRect, unsigned int uFormat) | |
2724 { | |
2725 dbgprintf("expDrawTextA(%p,...) => 8\n", hDC); | |
2726 return 8; | |
2727 } | |
2728 | |
2729 static int WINAPI expGetPrivateProfileIntA(const char* appname, | |
2730 const char* keyname, | |
2731 int default_value, | |
2732 const char* filename) | |
1 | 2733 { |
2734 int size=255; | |
2735 char buffer[256]; | |
2736 char* fullname; | |
2737 int result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2738 |
1 | 2739 buffer[255]=0; |
128 | 2740 if(!(appname && keyname && filename) ) |
2741 { | |
3465 | 2742 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, default_value ); |
128 | 2743 return default_value; |
2744 } | |
1 | 2745 fullname=(char*)malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
2746 strcpy(fullname, "Software\\IniFileMapping\\"); | |
2747 strcat(fullname, appname); | |
2748 strcat(fullname, "\\"); | |
2749 strcat(fullname, keyname); | |
2750 strcat(fullname, "\\"); | |
2751 strcat(fullname, filename); | |
2752 result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)buffer, &size); | |
2753 if((size>=0)&&(size<256)) | |
2754 buffer[size]=0; | |
3465 | 2755 // printf("GetPrivateProfileIntA(%s, %s, %s) -> %s\n", appname, keyname, filename, buffer); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2756 free(fullname); |
1 | 2757 if(result) |
128 | 2758 result=default_value; |
1 | 2759 else |
128 | 2760 result=atoi(buffer); |
2761 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, result); | |
2762 return result; | |
1 | 2763 } |
3465 | 2764 static int WINAPI expGetProfileIntA(const char* appname, |
2765 const char* keyname, | |
2766 int default_value) | |
128 | 2767 { |
2768 dbgprintf("GetProfileIntA -> "); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2769 return expGetPrivateProfileIntA(appname, keyname, default_value, "default"); |
128 | 2770 } |
2771 | |
3465 | 2772 static int WINAPI expGetPrivateProfileStringA(const char* appname, |
2773 const char* keyname, | |
2774 const char* def_val, | |
2775 char* dest, unsigned int len, | |
2776 const char* filename) | |
1 | 2777 { |
2778 int result; | |
2779 int size; | |
2780 char* fullname; | |
128 | 2781 dbgprintf("GetPrivateProfileStringA('%s', '%s', def_val '%s', 0x%x, 0x%x, '%s')", appname, keyname, def_val, dest, len, filename ); |
1 | 2782 if(!(appname && keyname && filename) ) return 0; |
2783 fullname=(char*)malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); | |
2784 strcpy(fullname, "Software\\IniFileMapping\\"); | |
2785 strcat(fullname, appname); | |
2786 strcat(fullname, "\\"); | |
2787 strcat(fullname, keyname); | |
2788 strcat(fullname, "\\"); | |
2789 strcat(fullname, filename); | |
2790 size=len; | |
2791 result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)dest, &size); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2792 free(fullname); |
128 | 2793 if(result) |
2794 { | |
2795 strncpy(dest, def_val, size); | |
2796 if (strlen(def_val)< size) size = strlen(def_val); | |
2797 } | |
2798 dbgprintf(" => %d ( '%s' )\n", size, dest); | |
1 | 2799 return size; |
2800 } | |
3465 | 2801 static int WINAPI expWritePrivateProfileStringA(const char* appname, |
2802 const char* keyname, | |
2803 const char* string, | |
2804 const char* filename) | |
1 | 2805 { |
2806 int size=256; | |
2807 char* fullname; | |
128 | 2808 dbgprintf("WritePrivateProfileStringA('%s', '%s', '%s', '%s')", appname, keyname, string, filename ); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2809 if(!(appname && keyname && filename) ) |
128 | 2810 { |
2811 dbgprintf(" => -1\n"); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2812 return -1; |
128 | 2813 } |
1 | 2814 fullname=(char*)malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
2815 strcpy(fullname, "Software\\IniFileMapping\\"); | |
2816 strcat(fullname, appname); | |
2817 strcat(fullname, "\\"); | |
2818 strcat(fullname, keyname); | |
2819 strcat(fullname, "\\"); | |
2820 strcat(fullname, filename); | |
2821 RegSetValueExA(HKEY_LOCAL_MACHINE, fullname, 0, REG_SZ, (int*)string, strlen(string)); | |
3465 | 2822 // printf("RegSetValueExA(%s,%d)\n", string, strlen(string)); |
2823 // printf("WritePrivateProfileStringA(%s, %s, %s, %s)\n", appname, keyname, string, filename ); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2824 free(fullname); |
128 | 2825 dbgprintf(" => 0\n"); |
1 | 2826 return 0; |
2827 } | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2828 |
1 | 2829 unsigned int _GetPrivateProfileIntA(const char* appname, const char* keyname, INT default_value, const char* filename) |
2830 { | |
2831 return expGetPrivateProfileIntA(appname, keyname, default_value, filename); | |
2832 } | |
2833 int _GetPrivateProfileStringA(const char* appname, const char* keyname, | |
3465 | 2834 const char* def_val, char* dest, unsigned int len, const char* filename) |
1 | 2835 { |
2836 return expGetPrivateProfileStringA(appname, keyname, def_val, dest, len, filename); | |
2837 } | |
2838 int _WritePrivateProfileStringA(const char* appname, const char* keyname, | |
3465 | 2839 const char* string, const char* filename) |
1 | 2840 { |
2841 return expWritePrivateProfileStringA(appname, keyname, string, filename); | |
2842 } | |
2843 | |
2844 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2845 |
3465 | 2846 static int WINAPI expDefDriverProc(int _private, int id, int msg, int arg1, int arg2) |
1 | 2847 { |
128 | 2848 dbgprintf("DefDriverProc(0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0\n", _private, id, msg, arg1, arg2); |
1 | 2849 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2850 } |
1 | 2851 |
3465 | 2852 static int WINAPI expSizeofResource(int v1, int v2) |
1 | 2853 { |
128 | 2854 int result=SizeofResource(v1, v2); |
2855 dbgprintf("SizeofResource(0x%x, 0x%x) => %d\n", v1, v2, result); | |
2856 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2857 } |
1 | 2858 |
3465 | 2859 static int WINAPI expGetLastError() |
1 | 2860 { |
128 | 2861 int result=GetLastError(); |
2862 dbgprintf("GetLastError() => 0x%x\n", result); | |
2863 return result; | |
1 | 2864 } |
2865 | |
3465 | 2866 static void WINAPI expSetLastError(int error) |
1 | 2867 { |
128 | 2868 dbgprintf("SetLastError(0x%x)\n", error); |
1 | 2869 SetLastError(error); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2870 } |
1 | 2871 |
3465 | 2872 static int WINAPI expStringFromGUID2(GUID* guid, char* str, int cbMax) |
128 | 2873 { |
2069 | 2874 int result=snprintf(str, cbMax, "%.8x-%.4x-%.4x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", |
2875 guid->f1, guid->f2, guid->f3, | |
2876 (unsigned char)guid->f4[0], (unsigned char)guid->f4[1], | |
2877 (unsigned char)guid->f4[2], (unsigned char)guid->f4[3], | |
2878 (unsigned char)guid->f4[4], (unsigned char)guid->f4[5], | |
2879 (unsigned char)guid->f4[6], (unsigned char)guid->f4[7]); | |
128 | 2880 dbgprintf("StringFromGUID2(0x%x, 0x%x='%s', %d) => %d\n", guid, str, str, cbMax, result); |
2881 return result; | |
2882 } | |
2883 | |
1 | 2884 |
3465 | 2885 static int WINAPI expGetFileVersionInfoSizeA(const char* name, int* lpHandle) |
1 | 2886 { |
128 | 2887 dbgprintf("GetFileVersionInfoSizeA(0x%x='%s', 0x%X) => 0\n", name, name, lpHandle); |
1 | 2888 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2889 } |
1 | 2890 |
3465 | 2891 static int WINAPI expIsBadStringPtrW(const short* string, int nchars) |
1 | 2892 { |
128 | 2893 int result; |
2894 if(string==0)result=1; else result=0; | |
2895 dbgprintf("IsBadStringPtrW(0x%x, %d) => %d", string, nchars, result); | |
2896 if(string)wch_print(string); | |
2897 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2898 } |
3465 | 2899 static int WINAPI expIsBadStringPtrA(const char* string, int nchars) |
3128 | 2900 { |
2901 return expIsBadStringPtrW((const short*)string, nchars); | |
2902 } | |
3465 | 2903 static long WINAPI expInterlockedExchangeAdd( long* dest, long incr ) |
1 | 2904 { |
2905 long ret; | |
3465 | 2906 __asm__ __volatile__ |
2907 ( | |
2908 "lock; xaddl %0,(%1)" | |
2909 : "=r" (ret) | |
2910 : "r" (dest), "0" (incr) | |
2911 : "memory" | |
2912 ); | |
1 | 2913 return ret; |
2914 } | |
2915 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2916 static long WINAPI expInterlockedCompareExchange( unsigned long* dest, unsigned long exchange, unsigned long comperand) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2917 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2918 unsigned long retval = *dest; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2919 if(*dest == comperand) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2920 *dest = exchange; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2921 return retval; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2922 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2923 |
3465 | 2924 static long WINAPI expInterlockedIncrement( long* dest ) |
1 | 2925 { |
3465 | 2926 long result=expInterlockedExchangeAdd( dest, 1 ) + 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2927 dbgprintf("InterlockedIncrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 2928 return result; |
1 | 2929 } |
3465 | 2930 static long WINAPI expInterlockedDecrement( long* dest ) |
1 | 2931 { |
3465 | 2932 long result=expInterlockedExchangeAdd( dest, -1 ) - 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2933 dbgprintf("InterlockedDecrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 2934 return result; |
1 | 2935 } |
2936 | |
3465 | 2937 static void WINAPI expOutputDebugStringA( const char* string ) |
1 | 2938 { |
128 | 2939 dbgprintf("OutputDebugStringA(0x%x='%s')\n", string); |
1 | 2940 fprintf(stderr, "DEBUG: %s\n", string); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2941 } |
1 | 2942 |
3465 | 2943 static int WINAPI expGetDC(int hwnd) |
1 | 2944 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2945 dbgprintf("GetDC(0x%x) => 1\n", hwnd); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2946 return 1; |
1 | 2947 } |
2948 | |
3465 | 2949 static int WINAPI expReleaseDC(int hwnd, int hdc) |
1 | 2950 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2951 dbgprintf("ReleaseDC(0x%x, 0x%x) => 1\n", hwnd, hdc); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2952 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2953 } |
3465 | 2954 |
2955 static int WINAPI expGetDesktopWindow() | |
128 | 2956 { |
3465 | 2957 dbgprintf("GetDesktopWindow() => 0\n"); |
2958 return 0; | |
128 | 2959 } |
3465 | 2960 |
2961 static int cursor[100]; | |
2962 | |
2963 static int WINAPI expLoadCursorA(int handle,LPCSTR name) | |
2964 { | |
2965 dbgprintf("LoadCursorA(%d, 0x%x='%s') => 0x%x\n", handle, name, (int)&cursor[0]); | |
2966 return (int)&cursor[0]; | |
2967 } | |
2968 static int WINAPI expSetCursor(void *cursor) | |
128 | 2969 { |
2970 dbgprintf("SetCursor(0x%x) => 0x%x\n", cursor, cursor); | |
2971 return (int)cursor; | |
2972 } | |
3465 | 2973 static int WINAPI expGetCursorPos(void *cursor) |
2069 | 2974 { |
2975 dbgprintf("GetCursorPos(0x%x) => 0x%x\n", cursor, cursor); | |
2976 return 1; | |
2977 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2978 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2979 static int show_cursor = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2980 static int WINAPI expShowCursor(int show) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2981 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2982 dbgprintf("ShowCursor(%d) => %d\n", show, show); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2983 if (show) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2984 show_cursor++; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2985 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2986 show_cursor--; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2987 return show_cursor; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2988 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2989 #endif |
3465 | 2990 static int WINAPI expRegisterWindowMessageA(char *message) |
2069 | 2991 { |
2992 dbgprintf("RegisterWindowMessageA(%s)\n", message); | |
2993 return 1; | |
2994 } | |
3465 | 2995 static int WINAPI expGetProcessVersion(int pid) |
2069 | 2996 { |
2997 dbgprintf("GetProcessVersion(%d)\n", pid); | |
2998 return 1; | |
2999 } | |
3465 | 3000 static int WINAPI expGetCurrentThread(void) |
2069 | 3001 { |
3457 | 3002 #warning FIXME! |
3003 dbgprintf("GetCurrentThread() => %x\n", 0xcfcf9898); | |
2779 | 3004 return 0xcfcf9898; |
2069 | 3005 } |
3465 | 3006 static int WINAPI expGetOEMCP(void) |
2069 | 3007 { |
3008 dbgprintf("GetOEMCP()\n"); | |
3009 return 1; | |
3010 } | |
3465 | 3011 static int WINAPI expGetCPInfo(int cp,void *info) |
2069 | 3012 { |
3013 dbgprintf("GetCPInfo()\n"); | |
3014 return 0; | |
3015 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3016 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3017 #define SM_CXSCREEN 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3018 #define SM_CYSCREEN 1 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3019 #define SM_XVIRTUALSCREEN 76 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3020 #define SM_YVIRTUALSCREEN 77 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3021 #define SM_CXVIRTUALSCREEN 78 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3022 #define SM_CYVIRTUALSCREEN 79 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3023 #define SM_CMONITORS 80 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3024 #endif |
3465 | 3025 static int WINAPI expGetSystemMetrics(int index) |
2069 | 3026 { |
3027 dbgprintf("GetSystemMetrics(%d)\n", index); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3028 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3029 switch(index) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3030 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3031 case SM_XVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3032 case SM_YVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3033 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3034 case SM_CXSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3035 case SM_CXVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3036 return PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3037 case SM_CYSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3038 case SM_CYVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3039 return PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3040 case SM_CMONITORS: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3041 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3042 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3043 #endif |
2069 | 3044 return 1; |
3045 } | |
3465 | 3046 static int WINAPI expGetSysColor(int index) |
2069 | 3047 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3048 dbgprintf("GetSysColor(%d) => 1\n", index); |
2069 | 3049 return 1; |
3050 } | |
3465 | 3051 static int WINAPI expGetSysColorBrush(int index) |
2069 | 3052 { |
3053 dbgprintf("GetSysColorBrush(%d)\n", index); | |
3054 return 1; | |
3055 } | |
3056 | |
3057 | |
3058 | |
3465 | 3059 static int WINAPI expGetSystemPaletteEntries(int hdc, int iStartIndex, int nEntries, void* lppe) |
128 | 3060 { |
3061 dbgprintf("GetSystemPaletteEntries(0x%x, 0x%x, 0x%x, 0x%x) => 0\n", | |
3465 | 3062 hdc, iStartIndex, nEntries, lppe); |
1 | 3063 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3064 } |
1 | 3065 |
3066 /* | |
3465 | 3067 typedef struct _TIME_ZONE_INFORMATION { |
3068 long Bias; | |
3069 char StandardName[32]; | |
3070 SYSTEMTIME StandardDate; | |
3071 long StandardBias; | |
3072 char DaylightName[32]; | |
3073 SYSTEMTIME DaylightDate; | |
3074 long DaylightBias; | |
3075 } TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; | |
3076 */ | |
3077 | |
3078 static int WINAPI expGetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation) | |
1 | 3079 { |
128 | 3080 const short name[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'S', 't', 'a', |
3081 'n', 'd', 'a', 'r', 'd', ' ', 'T', 'i', 'm', 'e', 0}; | |
3082 const short pname[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'D', 'a', 'y', | |
3083 'l', 'i', 'g', 'h', 't', ' ', 'T', 'i', 'm', 'e', 0}; | |
3084 dbgprintf("GetTimeZoneInformation(0x%x) => TIME_ZONE_ID_STANDARD\n"); | |
1 | 3085 memset(lpTimeZoneInformation, 0, sizeof(TIME_ZONE_INFORMATION)); |
128 | 3086 lpTimeZoneInformation->Bias=360;//GMT-6 |
3087 memcpy(lpTimeZoneInformation->StandardName, name, sizeof(name)); | |
3088 lpTimeZoneInformation->StandardDate.wMonth=10; | |
3089 lpTimeZoneInformation->StandardDate.wDay=5; | |
3090 lpTimeZoneInformation->StandardDate.wHour=2; | |
3091 lpTimeZoneInformation->StandardBias=0; | |
3092 memcpy(lpTimeZoneInformation->DaylightName, pname, sizeof(pname)); | |
3093 lpTimeZoneInformation->DaylightDate.wMonth=4; | |
3094 lpTimeZoneInformation->DaylightDate.wDay=1; | |
3095 lpTimeZoneInformation->DaylightDate.wHour=2; | |
3096 lpTimeZoneInformation->DaylightBias=-60; | |
3097 return TIME_ZONE_ID_STANDARD; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3098 } |
1 | 3099 |
3465 | 3100 static void WINAPI expGetLocalTime(SYSTEMTIME* systime) |
1 | 3101 { |
3102 time_t local_time; | |
3103 struct tm *local_tm; | |
3104 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3105 |
128 | 3106 dbgprintf("GetLocalTime(0x%x)\n"); |
1 | 3107 gettimeofday(&tv, NULL); |
3108 local_time=tv.tv_sec; | |
3109 local_tm=localtime(&local_time); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3110 |
1 | 3111 systime->wYear = local_tm->tm_year + 1900; |
3112 systime->wMonth = local_tm->tm_mon + 1; | |
3113 systime->wDayOfWeek = local_tm->tm_wday; | |
3114 systime->wDay = local_tm->tm_mday; | |
3115 systime->wHour = local_tm->tm_hour; | |
3116 systime->wMinute = local_tm->tm_min; | |
3117 systime->wSecond = local_tm->tm_sec; | |
3118 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3119 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3120 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3121 " Milliseconds: %d\n", | |
3122 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3123 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
1 | 3124 } |
3125 | |
3465 | 3126 static int WINAPI expGetSystemTime(SYSTEMTIME* systime) |
1 | 3127 { |
3128 time_t local_time; | |
3129 struct tm *local_tm; | |
3130 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3131 |
128 | 3132 dbgprintf("GetSystemTime(0x%x)\n", systime); |
1 | 3133 gettimeofday(&tv, NULL); |
3134 local_time=tv.tv_sec; | |
3135 local_tm=gmtime(&local_time); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3136 |
1 | 3137 systime->wYear = local_tm->tm_year + 1900; |
3138 systime->wMonth = local_tm->tm_mon + 1; | |
3139 systime->wDayOfWeek = local_tm->tm_wday; | |
3140 systime->wDay = local_tm->tm_mday; | |
3141 systime->wHour = local_tm->tm_hour; | |
3142 systime->wMinute = local_tm->tm_min; | |
3143 systime->wSecond = local_tm->tm_sec; | |
3144 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3145 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3146 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3147 " Milliseconds: %d\n", | |
3148 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3149 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
2069 | 3150 return 0; |
1 | 3151 } |
3152 | |
7386 | 3153 #define SECS_1601_TO_1970 ((369 * 365 + 89) * 86400ULL) |
3154 static void WINAPI expGetSystemTimeAsFileTime(FILETIME* systime) | |
3155 { | |
3156 struct tm *local_tm; | |
3157 struct timeval tv; | |
3158 unsigned long long secs; | |
3159 | |
3160 dbgprintf("GetSystemTime(0x%x)\n", systime); | |
3161 gettimeofday(&tv, NULL); | |
3162 secs = (tv.tv_sec + SECS_1601_TO_1970) * 10000000; | |
3163 secs += tv.tv_usec * 10; | |
3164 systime->dwLowDateTime = secs & 0xffffffff; | |
3165 systime->dwHighDateTime = (secs >> 32); | |
3166 } | |
3167 | |
3465 | 3168 static int WINAPI expGetEnvironmentVariableA(const char* name, char* field, int size) |
1 | 3169 { |
128 | 3170 char *p; |
3465 | 3171 // printf("%s %x %x\n", name, field, size); |
1 | 3172 if(field)field[0]=0; |
3465 | 3173 /* |
3174 p = getenv(name); | |
3175 if (p) strncpy(field,p,size); | |
3176 */ | |
128 | 3177 if (strcmp(name,"__MSVCRT_HEAP_SELECT")==0) |
3465 | 3178 strcpy(field,"__GLOBAL_HEAP_SELECTED,1"); |
128 | 3179 dbgprintf("GetEnvironmentVariableA(0x%x='%s', 0x%x, %d) => %d\n", name, name, field, size, strlen(field)); |
3180 return strlen(field); | |
3181 } | |
3182 | |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3183 static int WINAPI expSetEnvironmentVariableA(const char *name, const char *value) |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3184 { |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3185 dbgprintf("SetEnvironmentVariableA(%s, %s)\n", name, value); |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3186 return 0; |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3187 } |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3188 |
3465 | 3189 static void* WINAPI expCoTaskMemAlloc(ULONG cb) |
128 | 3190 { |
3191 return my_mreq(cb, 0); | |
3192 } | |
3465 | 3193 static void WINAPI expCoTaskMemFree(void* cb) |
128 | 3194 { |
3195 my_release(cb); | |
3196 } | |
3197 | |
3465 | 3198 |
3199 | |
3200 | |
3547 | 3201 void* CoTaskMemAlloc(unsigned long cb) |
3465 | 3202 { |
3203 return expCoTaskMemAlloc(cb); | |
3204 } | |
3205 void CoTaskMemFree(void* cb) | |
3206 { | |
3207 expCoTaskMemFree(cb); | |
3208 } | |
128 | 3209 |
3210 struct COM_OBJECT_INFO | |
3211 { | |
3212 GUID clsid; | |
7386 | 3213 long (*GetClassObject) (GUID* clsid, const GUID* iid, void** ppv); |
128 | 3214 }; |
3215 | |
3216 static struct COM_OBJECT_INFO* com_object_table=0; | |
3217 static int com_object_size=0; | |
7386 | 3218 int RegisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
128 | 3219 { |
2069 | 3220 if(!clsid || !gcs) |
3221 return -1; | |
128 | 3222 com_object_table=realloc(com_object_table, sizeof(struct COM_OBJECT_INFO)*(++com_object_size)); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3223 com_object_table[com_object_size-1].clsid=*clsid; |
128 | 3224 com_object_table[com_object_size-1].GetClassObject=gcs; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3225 return 0; |
128 | 3226 } |
3227 | |
7386 | 3228 int UnregisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
2069 | 3229 { |
3230 int found = 0; | |
3231 int i = 0; | |
3232 if(!clsid || !gcs) | |
3233 return -1; | |
3234 | |
3235 if (com_object_table == 0) | |
3236 printf("Warning: UnregisterComClass() called without any registered class\n"); | |
3237 while (i < com_object_size) | |
3238 { | |
3239 if (found && i > 0) | |
3240 { | |
3241 memcpy(&com_object_table[i - 1].clsid, | |
3242 &com_object_table[i].clsid, sizeof(GUID)); | |
3243 com_object_table[i - 1].GetClassObject = | |
3244 com_object_table[i].GetClassObject; | |
3245 } | |
3246 else if (memcmp(&com_object_table[i].clsid, clsid, sizeof(GUID)) == 0 | |
3247 && com_object_table[i].GetClassObject == gcs) | |
3248 { | |
3465 | 3249 found++; |
2069 | 3250 } |
3251 i++; | |
3252 } | |
3253 if (found) | |
3254 { | |
3255 if (--com_object_size == 0) | |
3256 { | |
3257 free(com_object_table); | |
3465 | 3258 com_object_table = 0; |
2069 | 3259 } |
3260 } | |
3261 return 0; | |
3262 } | |
3263 | |
3264 | |
7386 | 3265 const GUID IID_IUnknown = |
3465 | 3266 { |
3267 0x00000000, 0x0000, 0x0000, | |
3268 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3269 }; | |
7386 | 3270 const GUID IID_IClassFactory = |
3465 | 3271 { |
3272 0x00000001, 0x0000, 0x0000, | |
3273 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3274 }; | |
3275 | |
3276 static long WINAPI expCoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, | |
7386 | 3277 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3278 { |
3279 int i; | |
3280 struct COM_OBJECT_INFO* ci=0; | |
3281 for(i=0; i<com_object_size; i++) | |
3282 if(!memcmp(rclsid, &com_object_table[i].clsid, sizeof(GUID))) | |
3283 ci=&com_object_table[i]; | |
3465 | 3284 if(!ci)return REGDB_E_CLASSNOTREG; |
128 | 3285 // in 'real' world we should mess with IClassFactory here |
3286 i=ci->GetClassObject(rclsid, riid, ppv); | |
3287 return i; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3288 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3289 |
128 | 3290 long CoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, |
7386 | 3291 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3292 { |
3293 return expCoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv); | |
3294 } | |
3295 | |
3465 | 3296 static int WINAPI expIsRectEmpty(CONST RECT *lprc) |
128 | 3297 { |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3298 int r = 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3299 int w,h; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3300 //trapbug(); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3301 if (lprc) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3302 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3303 w = lprc->right - lprc->left; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3304 h = lprc->bottom - lprc->top; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3305 if (w <= 0 || h <= 0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3306 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3307 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3308 else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3309 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3310 |
3465 | 3311 dbgprintf("IsRectEmpty(%p) => %s\n", lprc, (r) ? "TRUE" : "FALSE"); |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3312 //printf("Rect: left: %d, top: %d, right: %d, bottom: %d\n", lprc->left, lprc->top, lprc->right, lprc->bottom); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3313 // return 0; // wmv9? |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3314 return r; // TM20 |
128 | 3315 } |
3316 | |
3465 | 3317 static int _adjust_fdiv=0; //what's this? - used to adjust division |
3318 | |
3319 | |
3320 | |
3321 | |
3322 static unsigned int WINAPI expGetTempPathA(unsigned int len, char* path) | |
128 | 3323 { |
3324 dbgprintf("GetTempPathA(%d, 0x%x)", len, path); | |
3325 if(len<5) | |
3326 { | |
3327 dbgprintf(" => 0\n"); | |
3328 return 0; | |
3329 } | |
3330 strcpy(path, "/tmp"); | |
3331 dbgprintf(" => 5 ( '/tmp' )\n"); | |
3332 return 5; | |
3333 } | |
3334 /* | |
3465 | 3335 FYI: |
3336 typedef struct | |
3337 { | |
3338 DWORD dwFileAttributes; | |
3339 FILETIME ftCreationTime; | |
3340 FILETIME ftLastAccessTime; | |
3341 FILETIME ftLastWriteTime; | |
3342 DWORD nFileSizeHigh; | |
3343 DWORD nFileSizeLow; | |
3344 DWORD dwReserved0; | |
3345 DWORD dwReserved1; | |
3346 CHAR cFileName[260]; | |
3347 CHAR cAlternateFileName[14]; | |
3348 } WIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; | |
3349 */ | |
3350 | |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3351 static DIR* qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3352 |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3353 static WIN_BOOL WINAPI expFindNextFileA(HANDLE h,LPWIN32_FIND_DATAA lpfd) |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3354 { |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3355 #ifdef QTX |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3356 dbgprintf("FindNextFileA(0x%x, 0x%x) => 0\n", h, lpfd); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3357 if(h==FILE_HANDLE_quicktimeqtx){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3358 struct dirent* d; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3359 if(!qtx_dir) return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3360 while((d=readdir(qtx_dir))){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3361 char* x=strrchr(d->d_name,'.'); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3362 if(!x) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3363 if(strcmp(x,".qtx")) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3364 strcpy(lpfd->cFileName,d->d_name); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3365 // sprintf(lpfd->cAlternateFileName,"%-8s.qtx",d->d_name); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3366 strcpy(lpfd->cAlternateFileName,"foobar.qtx"); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3367 printf("### FindNext: %s\n",lpfd->cFileName); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3368 return 1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3369 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3370 closedir(qtx_dir); qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3371 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3372 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3373 #endif |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3374 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3375 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3376 |
3465 | 3377 static HANDLE WINAPI expFindFirstFileA(LPCSTR s, LPWIN32_FIND_DATAA lpfd) |
128 | 3378 { |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3379 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => 0\n", s, s, lpfd); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3380 // printf("\n### FindFirstFileA('%s')...\n",s); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3381 #ifdef QTX |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3382 if(strstr(s, "quicktime\\*.QTX")){ |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3383 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTX\n", s, s, lpfd); |
8658 | 3384 printf("\n### Searching for QuickTime plugins (*.qtx) at %s...\n",def_path); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3385 qtx_dir=opendir(def_path); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3386 if(!qtx_dir) return (HANDLE)-1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3387 memset(lpfd,0,sizeof(*lpfd)); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3388 if(expFindNextFileA(FILE_HANDLE_quicktimeqtx,lpfd)) |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3389 return FILE_HANDLE_quicktimeqtx; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3390 printf("loader: Couldn't find the QuickTime plugins (.qtx files) at %s\n",def_path); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3391 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3392 } |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3393 #if 0 |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3394 if(strstr(s, "QuickTime.qts")){ |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3395 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTS\n", s, s, lpfd); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3396 // if(!strcmp(s,"C:\\windows\\QuickTime.qts\\QuickTime.qts\\*.QTX")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3397 // return (HANDLE)-1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3398 strcpy(lpfd->cFileName, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3399 strcpy(lpfd->cAlternateFileName, "QuickT~1.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3400 return FILE_HANDLE_quicktimeqts; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3401 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3402 #endif |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3403 #endif |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3404 if(strstr(s, "*.vwp")){ |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3405 // hack for VoxWare codec plugins: |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3406 strcpy(lpfd->cFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3407 strcpy(lpfd->cAlternateFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3408 return (HANDLE)0; |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3409 } |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3410 // return 'file not found' |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3411 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3412 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3413 |
3465 | 3414 static WIN_BOOL WINAPI expFindClose(HANDLE h) |
128 | 3415 { |
3416 dbgprintf("FindClose(0x%x) => 0\n", h); | |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3417 #ifdef QTX |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3418 // if(h==FILE_HANDLE_quicktimeqtx && qtx_dir){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3419 // closedir(qtx_dir); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3420 // qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3421 // } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3422 #endif |
128 | 3423 return 0; |
3424 } | |
3465 | 3425 static UINT WINAPI expSetErrorMode(UINT i) |
128 | 3426 { |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3427 dbgprintf("SetErrorMode(%d) => 0\n", i); |
128 | 3428 return 0; |
3429 } | |
3465 | 3430 static UINT WINAPI expGetWindowsDirectoryA(LPSTR s,UINT c) |
128 | 3431 { |
3432 char windir[]="c:\\windows"; | |
3433 int result; | |
3434 strncpy(s, windir, c); | |
3435 result=1+((c<strlen(windir))?c:strlen(windir)); | |
3436 dbgprintf("GetWindowsDirectoryA(0x%x, %d) => %d\n", s, c, result); | |
3437 return result; | |
3438 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3439 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3440 static UINT WINAPI expGetCurrentDirectoryA(UINT c, LPSTR s) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3441 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3442 char curdir[]="c:\\"; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3443 int result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3444 strncpy(s, curdir, c); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3445 result=1+((c<strlen(curdir))?c:strlen(curdir)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3446 dbgprintf("GetCurrentDirectoryA(0x%x, %d) => %d\n", s, c, result); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3447 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3448 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3449 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3450 static int WINAPI expSetCurrentDirectoryA(const char *pathname) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3451 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3452 dbgprintf("SetCurrentDirectoryA(0x%x = %s) => 1\n", pathname, pathname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3453 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3454 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3455 chdir(strcat(strrchr(pathname, '\\')+1, '/')); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3456 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3457 chdir(pathname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3458 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3459 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3460 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3461 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3462 static int WINAPI expCreateDirectoryA(const char *pathname, void *sa) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3463 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3464 dbgprintf("CreateDirectory(0x%x = %s, 0x%x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3465 pathname, pathname, sa); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3466 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3467 p = strrchr(pathname, '\\')+1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3468 strcpy(&buf[0], p); /* should be strncpy */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3469 if (!strlen(p)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3470 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3471 buf[0] = '.'; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3472 buf[1] = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3473 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3474 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3475 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3476 mkdir(strcat(strrchr(pathname, '\\')+1, '/'), 666); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3477 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3478 mkdir(pathname, 666); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3479 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3480 mkdir(&buf); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3481 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3482 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3483 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3484 #endif |
3465 | 3485 static WIN_BOOL WINAPI expDeleteFileA(LPCSTR s) |
128 | 3486 { |
3487 dbgprintf("DeleteFileA(0x%x='%s') => 0\n", s, s); | |
3488 return 0; | |
3489 } | |
3465 | 3490 static WIN_BOOL WINAPI expFileTimeToLocalFileTime(const FILETIME* cpf, LPFILETIME pf) |
128 | 3491 { |
3492 dbgprintf("FileTimeToLocalFileTime(0x%x, 0x%x) => 0\n", cpf, pf); | |
3493 return 0; | |
3494 } | |
3495 | |
3465 | 3496 static UINT WINAPI expGetTempFileNameA(LPCSTR cs1,LPCSTR cs2,UINT i,LPSTR ps) |
128 | 3497 { |
3498 char mask[16]="/tmp/AP_XXXXXX"; | |
3499 int result; | |
3500 dbgprintf("GetTempFileNameA(0x%x='%s', 0x%x='%s', %d, 0x%x)", cs1, cs1, cs2, cs2, i, ps); | |
3501 if(i && i<10) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3502 { |
128 | 3503 dbgprintf(" => -1\n"); |
3504 return -1; | |
3505 } | |
3506 result=mkstemp(mask); | |
3507 sprintf(ps, "AP%d", result); | |
3508 dbgprintf(" => %d\n", strlen(ps)); | |
3509 return strlen(ps); | |
3510 } | |
3511 // | |
3512 // This func might need proper implementation if we want AngelPotion codec. | |
3513 // They try to open APmpeg4v1.apl with it. | |
3514 // DLL will close opened file with CloseHandle(). | |
3515 // | |
3465 | 3516 static HANDLE WINAPI expCreateFileA(LPCSTR cs1,DWORD i1,DWORD i2, |
3517 LPSECURITY_ATTRIBUTES p1, DWORD i3,DWORD i4,HANDLE i5) | |
128 | 3518 { |
3519 dbgprintf("CreateFileA(0x%x='%s', %d, %d, 0x%x, %d, %d, 0x%x)\n", cs1, cs1, i1, | |
3465 | 3520 i2, p1, i3, i4, i5); |
128 | 3521 if((!cs1) || (strlen(cs1)<2))return -1; |
3128 | 3522 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3523 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3524 if(strstr(cs1, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3525 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3526 int result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3527 char* tmp=(char*)malloc(strlen(def_path)+50); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3528 strcpy(tmp, def_path); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3529 strcat(tmp, "/"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3530 strcat(tmp, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3531 result=open(tmp, O_RDONLY); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3532 free(tmp); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3533 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3534 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3535 if(strstr(cs1, ".qtx")) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3536 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3537 int result; |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3538 char* tmp=(char*)malloc(strlen(def_path)+250); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3539 char* x=strrchr(cs1,'\\'); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3540 sprintf(tmp,"%s/%s",def_path,x?(x+1):cs1); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3541 // printf("### Open: %s -> %s\n",cs1,tmp); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3542 result=open(tmp, O_RDONLY); |
8285 | 3543 free(tmp); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3544 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3545 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3546 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3547 |
3128 | 3548 if(strncmp(cs1, "AP", 2) == 0) |
128 | 3549 { |
3550 int result; | |
3551 char* tmp=(char*)malloc(strlen(def_path)+50); | |
3552 strcpy(tmp, def_path); | |
3553 strcat(tmp, "/"); | |
3554 strcat(tmp, "APmpg4v1.apl"); | |
3555 result=open(tmp, O_RDONLY); | |
3556 free(tmp); | |
3557 return result; | |
3128 | 3558 } |
3559 if (strstr(cs1, "vp3")) | |
3560 { | |
3561 int r; | |
3562 int flg = 0; | |
3563 char* tmp=(char*)malloc(20 + strlen(cs1)); | |
3564 strcpy(tmp, "/tmp/"); | |
3565 strcat(tmp, cs1); | |
3566 r = 4; | |
3567 while (tmp[r]) | |
3568 { | |
3569 if (tmp[r] == ':' || tmp[r] == '\\') | |
3570 tmp[r] = '_'; | |
3571 r++; | |
3572 } | |
3573 if (GENERIC_READ & i1) | |
3574 flg |= O_RDONLY; | |
3575 else if (GENERIC_WRITE & i1) | |
3576 { | |
3577 flg |= O_WRONLY; | |
3578 printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", tmp, r, flg); | |
3579 } | |
3580 r=open(tmp, flg); | |
3581 free(tmp); | |
3582 return r; | |
3583 } | |
3584 | |
12735
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3585 // Needed by wnvplay1.dll |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3586 if (strstr(cs1, "WINNOV.bmp")) |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3587 { |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3588 int r; |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3589 r=open("/dev/null", 0); |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3590 return r; |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3591 } |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3592 |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3593 #if 0 |
7386 | 3594 /* we need this for some virtualdub filters */ |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3595 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3596 int r; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3597 int flg = 0; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3598 if (GENERIC_READ & i1) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3599 flg |= O_RDONLY; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3600 else if (GENERIC_WRITE & i1) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3601 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3602 flg |= O_WRONLY; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3603 printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", cs1, r, flg); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3604 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3605 r=open(cs1, flg); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3606 return r; |
7386 | 3607 } |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3608 #endif |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3609 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3610 return atoi(cs1+2); |
128 | 3611 } |
5234 | 3612 static UINT WINAPI expGetSystemDirectoryA( |
3613 char* lpBuffer, // address of buffer for system directory | |
3614 UINT uSize // size of directory buffer | |
3615 ){ | |
3616 dbgprintf("GetSystemDirectoryA(%p,%d)\n", lpBuffer,uSize); | |
3617 if(!lpBuffer) strcpy(lpBuffer,"."); | |
3618 return 1; | |
3619 } | |
3620 /* | |
128 | 3621 static char sysdir[]="."; |
3465 | 3622 static LPCSTR WINAPI expGetSystemDirectoryA() |
128 | 3623 { |
3624 dbgprintf("GetSystemDirectoryA() => 0x%x='%s'\n", sysdir, sysdir); | |
3625 return sysdir; | |
3626 } | |
5234 | 3627 */ |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3628 static DWORD WINAPI expGetFullPathNameA |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3629 ( |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3630 LPCTSTR lpFileName, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3631 DWORD nBufferLength, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3632 LPTSTR lpBuffer, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3633 LPTSTR lpFilePart |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3634 ){ |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3635 if(!lpFileName) return 0; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3636 dbgprintf("GetFullPathNameA('%s',%d,%p,%p)\n",lpFileName,nBufferLength, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3637 lpBuffer, lpFilePart); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3638 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3639 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3640 strcpy(lpFilePart, "Quick123.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3641 #else |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3642 strcpy(lpFilePart, lpFileName); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3643 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3644 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3645 if (strrchr(lpFileName, '\\')) |
8451 | 3646 lpFilePart = strrchr(lpFileName, '\\'); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3647 else |
13182 | 3648 lpFilePart = (LPTSTR)lpFileName; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3649 #endif |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3650 strcpy(lpBuffer, lpFileName); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3651 // strncpy(lpBuffer, lpFileName, rindex(lpFileName, '\\')-lpFileName); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3652 return strlen(lpBuffer); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3653 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3654 |
5234 | 3655 static DWORD WINAPI expGetShortPathNameA |
3656 ( | |
3657 LPCSTR longpath, | |
3658 LPSTR shortpath, | |
3659 DWORD shortlen | |
3660 ){ | |
3661 if(!longpath) return 0; | |
3662 dbgprintf("GetShortPathNameA('%s',%p,%d)\n",longpath,shortpath,shortlen); | |
3663 strcpy(shortpath,longpath); | |
3664 return strlen(shortpath); | |
3665 } | |
7386 | 3666 |
3465 | 3667 static WIN_BOOL WINAPI expReadFile(HANDLE h,LPVOID pv,DWORD size,LPDWORD rd,LPOVERLAPPED unused) |
128 | 3668 { |
3669 int result; | |
3670 dbgprintf("ReadFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, rd); | |
3671 result=read(h, pv, size); | |
3672 if(rd)*rd=result; | |
3673 if(!result)return 0; | |
3674 return 1; | |
3675 } | |
3676 | |
3465 | 3677 static WIN_BOOL WINAPI expWriteFile(HANDLE h,LPCVOID pv,DWORD size,LPDWORD wr,LPOVERLAPPED unused) |
128 | 3678 { |
3679 int result; | |
3680 dbgprintf("WriteFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, wr); | |
3681 if(h==1234)h=1; | |
3682 result=write(h, pv, size); | |
3683 if(wr)*wr=result; | |
3684 if(!result)return 0; | |
3685 return 1; | |
3686 } | |
3465 | 3687 static DWORD WINAPI expSetFilePointer(HANDLE h, LONG val, LPLONG ext, DWORD whence) |
128 | 3688 { |
3689 int wh; | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3690 dbgprintf("SetFilePointer(%d, 0x%x, 0x%x = %d, %d)\n", h, val, ext, *ext, whence); |
3465 | 3691 //why would DLL want temporary file with >2Gb size? |
128 | 3692 switch(whence) |
3693 { | |
3694 case FILE_BEGIN: | |
3695 wh=SEEK_SET;break; | |
3696 case FILE_END: | |
3697 wh=SEEK_END;break; | |
3698 case FILE_CURRENT: | |
3699 wh=SEEK_CUR;break; | |
3700 default: | |
3701 return -1; | |
3702 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3703 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3704 if (val == 0 && ext != 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3705 val = val&(*ext); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3706 #endif |
128 | 3707 return lseek(h, val, wh); |
3708 } | |
3709 | |
3465 | 3710 static HDRVR WINAPI expOpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName, |
3711 LPARAM lParam2) | |
128 | 3712 { |
3713 dbgprintf("OpenDriverA(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3714 return -1; |
128 | 3715 } |
3465 | 3716 static HDRVR WINAPI expOpenDriver(LPCSTR szDriverName, LPCSTR szSectionName, |
3717 LPARAM lParam2) | |
128 | 3718 { |
3719 dbgprintf("OpenDriver(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3720 return -1; |
128 | 3721 } |
1 | 3722 |
3723 | |
3465 | 3724 static WIN_BOOL WINAPI expGetProcessAffinityMask(HANDLE hProcess, |
3725 LPDWORD lpProcessAffinityMask, | |
3726 LPDWORD lpSystemAffinityMask) | |
128 | 3727 { |
3728 dbgprintf("GetProcessAffinityMask(0x%x, 0x%x, 0x%x) => 1\n", | |
3465 | 3729 hProcess, lpProcessAffinityMask, lpSystemAffinityMask); |
128 | 3730 if(lpProcessAffinityMask)*lpProcessAffinityMask=1; |
3731 if(lpSystemAffinityMask)*lpSystemAffinityMask=1; | |
3732 return 1; | |
1 | 3733 } |
3734 | |
3465 | 3735 static int WINAPI expMulDiv(int nNumber, int nNumerator, int nDenominator) |
713 | 3736 { |
3737 static const long long max_int=0x7FFFFFFFLL; | |
3738 static const long long min_int=-0x80000000LL; | |
3739 long long tmp=(long long)nNumber*(long long)nNumerator; | |
3465 | 3740 dbgprintf("expMulDiv %d * %d / %d\n", nNumber, nNumerator, nDenominator); |
713 | 3741 if(!nDenominator)return 1; |
3742 tmp/=nDenominator; | |
3743 if(tmp<min_int) return 1; | |
3744 if(tmp>max_int) return 1; | |
3745 return (int)tmp; | |
3746 } | |
3747 | |
3465 | 3748 static LONG WINAPI explstrcmpiA(const char* str1, const char* str2) |
713 | 3749 { |
3750 LONG result=strcasecmp(str1, str2); | |
3751 dbgprintf("strcmpi(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
3752 return result; | |
3753 } | |
3754 | |
3465 | 3755 static LONG WINAPI explstrlenA(const char* str1) |
713 | 3756 { |
3757 LONG result=strlen(str1); | |
3134 | 3758 dbgprintf("strlen(0x%x='%.50s') => %d\n", str1, str1, result); |
713 | 3759 return result; |
3760 } | |
3761 | |
3465 | 3762 static LONG WINAPI explstrcpyA(char* str1, const char* str2) |
713 | 3763 { |
3764 int result= (int) strcpy(str1, str2); | |
3134 | 3765 dbgprintf("strcpy(0x%.50x, 0x%.50x='%.50s') => %d\n", str1, str2, str2, result); |
713 | 3766 return result; |
3767 } | |
3465 | 3768 static LONG WINAPI explstrcpynA(char* str1, const char* str2,int len) |
2069 | 3769 { |
3770 int result; | |
3771 if (strlen(str2)>len) | |
3465 | 3772 result = (int) strncpy(str1, str2,len); |
2069 | 3773 else |
3465 | 3774 result = (int) strcpy(str1,str2); |
2069 | 3775 dbgprintf("strncpy(0x%x, 0x%x='%s' len %d strlen %d) => %x\n", str1, str2, str2,len, strlen(str2),result); |
3776 return result; | |
3777 } | |
3465 | 3778 static LONG WINAPI explstrcatA(char* str1, const char* str2) |
2069 | 3779 { |
3780 int result= (int) strcat(str1, str2); | |
3781 dbgprintf("strcat(0x%x, 0x%x='%s') => %d\n", str1, str2, str2, result); | |
3782 return result; | |
3783 } | |
3784 | |
128 | 3785 |
3465 | 3786 static LONG WINAPI expInterlockedExchange(long *dest, long l) |
497 | 3787 { |
3465 | 3788 long retval = *dest; |
3789 *dest = l; | |
3790 return retval; | |
497 | 3791 } |
3792 | |
3465 | 3793 static void WINAPI expInitCommonControls(void) |
1543 | 3794 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3795 dbgprintf("InitCommonControls called!\n"); |
2069 | 3796 return; |
1543 | 3797 } |
3798 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3799 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3800 /* needed by QuickTime.qts */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3801 static HWND WINAPI expCreateUpDownControl (DWORD style, INT x, INT y, INT cx, INT cy, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3802 HWND parent, INT id, HINSTANCE inst, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3803 HWND buddy, INT maxVal, INT minVal, INT curVal) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3804 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3805 dbgprintf("CreateUpDownControl(...)\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3806 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3807 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3808 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3809 |
3457 | 3810 /* alex: implement this call! needed for 3ivx */ |
3465 | 3811 static HRESULT WINAPI expCoCreateFreeThreadedMarshaler(void *pUnkOuter, void **ppUnkInner) |
2396 | 3812 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3813 dbgprintf("CoCreateFreeThreadedMarshaler(%p, %p) called!\n", |
3465 | 3814 pUnkOuter, ppUnkInner); |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
3815 // return 0; |
3457 | 3816 return ERROR_CALL_NOT_IMPLEMENTED; |
2396 | 3817 } |
3818 | |
2779 | 3819 |
3465 | 3820 static int WINAPI expDuplicateHandle(HANDLE hSourceProcessHandle, // handle to source process |
3821 HANDLE hSourceHandle, // handle to duplicate | |
3822 HANDLE hTargetProcessHandle, // handle to target process | |
3823 HANDLE* lpTargetHandle, // duplicate handle | |
3824 DWORD dwDesiredAccess, // requested access | |
3825 int bInheritHandle, // handle inheritance option | |
3826 DWORD dwOptions // optional actions | |
3827 ) | |
2779 | 3828 { |
3829 dbgprintf("DuplicateHandle(%p, %p, %p, %p, 0x%x, %d, %d) called\n", | |
3465 | 3830 hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, |
3831 lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions); | |
2779 | 3832 *lpTargetHandle = hSourceHandle; |
3833 return 1; | |
3834 } | |
3835 | |
3128 | 3836 // required by PIM1 codec (used by win98 PCTV Studio capture sw) |
3465 | 3837 static HRESULT WINAPI expCoInitialize( |
3838 LPVOID lpReserved /* [in] pointer to win32 malloc interface | |
3839 (obsolete, should be NULL) */ | |
3840 ) | |
3033 | 3841 { |
3465 | 3842 /* |
3843 * Just delegate to the newer method. | |
3844 */ | |
3845 return 0; //CoInitializeEx(lpReserved, COINIT_APARTMENTTHREADED); | |
3033 | 3846 } |
3847 | |
3465 | 3848 static DWORD WINAPI expSetThreadAffinityMask |
3441 | 3849 ( |
3850 HANDLE hThread, | |
3851 DWORD dwThreadAffinityMask | |
3852 ){ | |
3853 return 0; | |
3854 }; | |
3033 | 3855 |
3465 | 3856 /* |
3857 * no WINAPI functions - CDECL | |
3858 */ | |
3859 static void* expmalloc(int size) | |
3860 { | |
3861 //printf("malloc"); | |
3862 // return malloc(size); | |
3863 void* result=my_mreq(size,0); | |
3864 dbgprintf("malloc(0x%x) => 0x%x\n", size,result); | |
3865 if(result==0) | |
3866 printf("WARNING: malloc() failed\n"); | |
3867 return result; | |
3868 } | |
3869 static void expfree(void* mem) | |
3870 { | |
3871 // return free(mem); | |
3872 dbgprintf("free(%p)\n", mem); | |
3873 my_release(mem); | |
3874 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3875 /* needed by atrac3.acm */ |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3876 static void *expcalloc(int num, int size) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3877 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3878 void* result=my_mreq(num*size,1); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3879 dbgprintf("calloc(%d,%d) => %p\n", num,size,result); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3880 if(result==0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3881 printf("WARNING: calloc() failed\n"); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3882 return result; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3883 } |
3465 | 3884 static void* expnew(int size) |
3885 { | |
3886 // printf("NEW:: Call from address %08x\n STACK DUMP:\n", *(-1+(int*)&size)); | |
3887 // printf("%08x %08x %08x %08x\n", | |
3888 // size, *(1+(int*)&size), | |
3889 // *(2+(int*)&size),*(3+(int*)&size)); | |
3890 void* result; | |
3891 assert(size >= 0); | |
3892 | |
3893 result=my_mreq(size,0); | |
3894 dbgprintf("new(%d) => %p\n", size, result); | |
3895 if (result==0) | |
3896 printf("WARNING: new() failed\n"); | |
3897 return result; | |
3898 | |
3899 } | |
3900 static int expdelete(void* memory) | |
3901 { | |
3902 dbgprintf("delete(%p)\n", memory); | |
3903 my_release(memory); | |
3904 return 0; | |
3905 } | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3906 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3907 /* |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3908 * local definition - we need only the last two members at this point |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3909 * otherwice we would have to introduce here GUIDs and some more types.. |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3910 */ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3911 typedef struct __attribute__((__packed__)) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3912 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3913 char hay[0x40]; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3914 unsigned long cbFormat; //0x40 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3915 char* pbFormat; //0x44 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3916 } MY_MEDIA_TYPE; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3917 static HRESULT WINAPI expMoCopyMediaType(MY_MEDIA_TYPE* dest, const MY_MEDIA_TYPE* src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3918 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3919 if (!dest || !src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3920 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3921 memcpy(dest, src, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3922 if (dest->cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3923 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3924 dest->pbFormat = (char*) my_mreq(dest->cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3925 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3926 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3927 memcpy(dest->pbFormat, src->pbFormat, dest->cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3928 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3929 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3930 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3931 static HRESULT WINAPI expMoInitMediaType(MY_MEDIA_TYPE* dest, DWORD cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3932 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3933 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3934 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3935 memset(dest, 0, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3936 if (cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3937 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3938 dest->pbFormat = (char*) my_mreq(cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3939 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3940 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3941 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3942 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3943 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3944 static HRESULT WINAPI expMoCreateMediaType(MY_MEDIA_TYPE** dest, DWORD cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3945 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3946 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3947 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3948 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3949 return expMoInitMediaType(*dest, cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3950 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3951 static HRESULT WINAPI expMoDuplicateMediaType(MY_MEDIA_TYPE** dest, const void* src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3952 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3953 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3954 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3955 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3956 return expMoCopyMediaType(*dest, src); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3957 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3958 static HRESULT WINAPI expMoFreeMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3959 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3960 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3961 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3962 if (dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3963 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3964 my_release(dest->pbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3965 dest->pbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3966 dest->cbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3967 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3968 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3969 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3970 static HRESULT WINAPI expMoDeleteMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3971 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3972 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3973 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3974 expMoFreeMediaType(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3975 my_release(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3976 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3977 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3978 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3979 static int exp_snprintf( char *str, int size, const char *format, ... ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3980 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3981 int x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3982 va_list va; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3983 va_start(va, format); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3984 x=snprintf(str,size,format,va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3985 dbgprintf("_snprintf( 0x%x, %d, %s, ... ) => %d\n",str,size,format,x); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3986 va_end(va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3987 return x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3988 } |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3989 |
7386 | 3990 #if 0 |
3465 | 3991 static int exp_initterm(int v1, int v2) |
3992 { | |
3993 dbgprintf("_initterm(0x%x, 0x%x) => 0\n", v1, v2); | |
3994 return 0; | |
3995 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3996 #else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3997 /* merged from wine - 2002.04.21 */ |
7386 | 3998 typedef void (*_INITTERMFUNC)(); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3999 static int exp_initterm(_INITTERMFUNC *start, _INITTERMFUNC *end) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4000 { |
7386 | 4001 dbgprintf("_initterm(0x%x, 0x%x) %p\n", start, end, *start); |
4002 while (start < end) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4003 { |
7386 | 4004 if (*start) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4005 { |
7386 | 4006 //printf("call _initfunc: from: %p %d\n", *start); |
4007 // ok this trick with push/pop is necessary as otherwice | |
4008 // edi/esi registers are being trashed | |
4009 void* p = *start; | |
4010 __asm__ __volatile__ | |
4011 ( | |
4012 "pushl %%ebx \n\t" | |
4013 "pushl %%ecx \n\t" | |
4014 "pushl %%edx \n\t" | |
4015 "pushl %%edi \n\t" | |
4016 "pushl %%esi \n\t" | |
4017 "call *%%eax \n\t" | |
4018 "popl %%esi \n\t" | |
4019 "popl %%edi \n\t" | |
4020 "popl %%edx \n\t" | |
4021 "popl %%ecx \n\t" | |
4022 "popl %%ebx \n\t" | |
4023 : | |
4024 : "a"(p) | |
4025 : "memory" | |
4026 ); | |
4027 //printf("done %p %d:%d\n", end); | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4028 } |
7386 | 4029 start++; |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4030 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4031 return 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4032 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4033 #endif |
3465 | 4034 |
7386 | 4035 static void* exp__dllonexit() |
4036 { | |
4037 // FIXME extract from WINE | |
4038 return NULL; | |
4039 } | |
4040 | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4041 static int expwsprintfA(char* string, const char* format, ...) |
3465 | 4042 { |
4043 va_list va; | |
4044 int result; | |
4045 va_start(va, format); | |
4046 result = vsprintf(string, format, va); | |
4047 dbgprintf("wsprintfA(0x%x, '%s', ...) => %d\n", string, format, result); | |
4048 va_end(va); | |
4049 return result; | |
4050 } | |
4051 | |
4052 static int expsprintf(char* str, const char* format, ...) | |
4053 { | |
4054 va_list args; | |
4055 int r; | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4056 dbgprintf("sprintf(0x%x, %s)\n", str, format); |
3465 | 4057 va_start(args, format); |
4058 r = vsprintf(str, format, args); | |
4059 va_end(args); | |
4060 return r; | |
4061 } | |
4062 static int expsscanf(const char* str, const char* format, ...) | |
4063 { | |
4064 va_list args; | |
4065 int r; | |
4066 dbgprintf("sscanf(%s, %s)\n", str, format); | |
4067 va_start(args, format); | |
4068 r = vsscanf(str, format, args); | |
4069 va_end(args); | |
4070 return r; | |
4071 } | |
4072 static void* expfopen(const char* path, const char* mode) | |
4073 { | |
4074 printf("fopen: \"%s\" mode:%s\n", path, mode); | |
4075 //return fopen(path, mode); | |
4076 return fdopen(0, mode); // everything on screen | |
4077 } | |
4078 static int expfprintf(void* stream, const char* format, ...) | |
4079 { | |
4080 va_list args; | |
4081 int r = 0; | |
4082 dbgprintf("fprintf(%p, %s, ...)\n", stream, format); | |
4083 #if 1 | |
4084 va_start(args, format); | |
4085 r = vfprintf((FILE*) stream, format, args); | |
4086 va_end(args); | |
4087 #endif | |
4088 return r; | |
4089 } | |
4090 | |
4091 static int expprintf(const char* format, ...) | |
4092 { | |
4093 va_list args; | |
4094 int r; | |
4095 dbgprintf("printf(%s, ...)\n", format); | |
4096 va_start(args, format); | |
4097 r = vprintf(format, args); | |
4098 va_end(args); | |
4099 return r; | |
4100 } | |
4101 | |
4102 static char* expgetenv(const char* varname) | |
4103 { | |
4104 char* v = getenv(varname); | |
4105 dbgprintf("getenv(%s) => %s\n", varname, v); | |
4106 return v; | |
4107 } | |
4108 | |
4109 static void* expwcscpy(WCHAR* dst, const WCHAR* src) | |
4110 { | |
4111 WCHAR* p = dst; | |
4112 while ((*p++ = *src++)) | |
4113 ; | |
4114 return dst; | |
4115 } | |
4116 | |
4117 static char* expstrrchr(char* string, int value) | |
4118 { | |
4119 char* result=strrchr(string, value); | |
4120 if(result) | |
4121 dbgprintf("strrchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4122 else | |
4123 dbgprintf("strrchr(0x%x='%s', %d) => 0", string, string, value); | |
4124 return result; | |
4125 } | |
4126 | |
4127 static char* expstrchr(char* string, int value) | |
4128 { | |
4129 char* result=strchr(string, value); | |
4130 if(result) | |
4131 dbgprintf("strchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4132 else | |
4133 dbgprintf("strchr(0x%x='%s', %d) => 0", string, string, value); | |
4134 return result; | |
4135 } | |
4136 static int expstrlen(char* str) | |
4137 { | |
4138 int result=strlen(str); | |
4139 dbgprintf("strlen(0x%x='%s') => %d\n", str, str, result); | |
4140 return result; | |
4141 } | |
4142 static char* expstrcpy(char* str1, const char* str2) | |
4143 { | |
4144 char* result= strcpy(str1, str2); | |
4145 dbgprintf("strcpy(0x%x, 0x%x='%s') => %p\n", str1, str2, str2, result); | |
4146 return result; | |
4147 } | |
9397 | 4148 static char* expstrncpy(char* str1, const char* str2, size_t count) |
4149 { | |
4150 char* result= strncpy(str1, str2, count); | |
4151 dbgprintf("strncpy(0x%x, 0x%x='%s', %d) => %p\n", str1, str2, str2, count, result); | |
4152 return result; | |
4153 } | |
3465 | 4154 static int expstrcmp(const char* str1, const char* str2) |
4155 { | |
4156 int result=strcmp(str1, str2); | |
4157 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4158 return result; | |
4159 } | |
4160 static int expstrncmp(const char* str1, const char* str2,int x) | |
4161 { | |
4162 int result=strncmp(str1, str2,x); | |
4163 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4164 return result; | |
4165 } | |
4166 static char* expstrcat(char* str1, const char* str2) | |
4167 { | |
4168 char* result = strcat(str1, str2); | |
4169 dbgprintf("strcat(0x%x='%s', 0x%x='%s') => %p\n", str1, str1, str2, str2, result); | |
4170 return result; | |
4171 } | |
4172 static char* exp_strdup(const char* str1) | |
4173 { | |
4174 int l = strlen(str1); | |
7386 | 4175 char* result = (char*) my_mreq(l + 1,0); |
3465 | 4176 if (result) |
4177 strcpy(result, str1); | |
4178 dbgprintf("_strdup(0x%x='%s') => %p\n", str1, str1, result); | |
4179 return result; | |
4180 } | |
4181 static int expisalnum(int c) | |
4182 { | |
4183 int result= (int) isalnum(c); | |
4184 dbgprintf("isalnum(0x%x='%c' => %d\n", c, c, result); | |
4185 return result; | |
4186 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4187 static int expisspace(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4188 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4189 int result= (int) isspace(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4190 dbgprintf("isspace(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4191 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4192 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4193 static int expisalpha(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4194 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4195 int result= (int) isalpha(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4196 dbgprintf("isalpha(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4197 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4198 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4199 static int expisdigit(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4200 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4201 int result= (int) isdigit(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4202 dbgprintf("isdigit(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4203 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4204 } |
3465 | 4205 static void* expmemmove(void* dest, void* src, int n) |
4206 { | |
4207 void* result = memmove(dest, src, n); | |
4208 dbgprintf("memmove(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4209 return result; | |
4210 } | |
4211 static int expmemcmp(void* dest, void* src, int n) | |
4212 { | |
4213 int result = memcmp(dest, src, n); | |
4214 dbgprintf("memcmp(0x%x, 0x%x, %d) => %d\n", dest, src, n, result); | |
4215 return result; | |
4216 } | |
4217 static void* expmemcpy(void* dest, void* src, int n) | |
4218 { | |
4219 void *result = memcpy(dest, src, n); | |
4220 dbgprintf("memcpy(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4221 return result; | |
4222 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4223 static void* expmemset(void* dest, int c, size_t n) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4224 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4225 void *result = memset(dest, c, n); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4226 dbgprintf("memset(0x%x, %d, %d) => %p\n", dest, c, n, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4227 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4228 } |
3465 | 4229 static time_t exptime(time_t* t) |
4230 { | |
4231 time_t result = time(t); | |
4232 dbgprintf("time(0x%x) => %d\n", t, result); | |
4233 return result; | |
4234 } | |
4235 | |
4236 static int exprand(void) | |
4237 { | |
4238 return rand(); | |
4239 } | |
4240 | |
4241 static void expsrand(int seed) | |
4242 { | |
4243 srand(seed); | |
4244 } | |
4245 | |
4246 #if 1 | |
4247 | |
4248 // prefered compilation with -O2 -ffast-math ! | |
4249 | |
4250 static double explog10(double x) | |
4251 { | |
4252 /*printf("Log10 %f => %f 0x%Lx\n", x, log10(x), *((int64_t*)&x));*/ | |
4253 return log10(x); | |
4254 } | |
4255 | |
4256 static double expcos(double x) | |
4257 { | |
4258 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ | |
4259 return cos(x); | |
4260 } | |
4261 | |
4262 /* doens't work */ | |
4263 static long exp_ftol_wrong(double x) | |
4264 { | |
4265 return (long) x; | |
4266 } | |
4267 | |
4268 #else | |
4269 | |
4270 static void explog10(void) | |
4271 { | |
4272 __asm__ __volatile__ | |
4273 ( | |
4274 "fldl 8(%esp) \n\t" | |
4275 "fldln2 \n\t" | |
4276 "fxch %st(1) \n\t" | |
4277 "fyl2x \n\t" | |
4278 ); | |
4279 } | |
4280 | |
4281 static void expcos(void) | |
4282 { | |
4283 __asm__ __volatile__ | |
4284 ( | |
4285 "fldl 8(%esp) \n\t" | |
4286 "fcos \n\t" | |
4287 ); | |
4288 } | |
4289 | |
4290 #endif | |
4291 | |
4292 // this seem to be the only how to make this function working properly | |
4293 // ok - I've spent tremendous amount of time (many many many hours | |
4294 // of debuging fixing & testing - it's almost unimaginable - kabi | |
4295 | |
4296 // _ftol - operated on the float value which is already on the FPU stack | |
3923
3fd9b781a9d2
workaround for the guilty code that caused sig11 when compiled with gcc-3.0.x
pl
parents:
3672
diff
changeset
|
4297 |
3465 | 4298 static void exp_ftol(void) |
4299 { | |
4300 __asm__ __volatile__ | |
4301 ( | |
4302 "sub $12, %esp \n\t" | |
4303 "fstcw -2(%ebp) \n\t" | |
4304 "wait \n\t" | |
3925 | 4305 "movw -2(%ebp), %ax \n\t" |
4306 "orb $0x0C, %ah \n\t" | |
4307 "movw %ax, -4(%ebp) \n\t" | |
3465 | 4308 "fldcw -4(%ebp) \n\t" |
4309 "fistpl -12(%ebp) \n\t" | |
4310 "fldcw -2(%ebp) \n\t" | |
3925 | 4311 "movl -12(%ebp), %eax \n\t" |
4312 //Note: gcc 3.03 does not do the following op if it | |
4313 // knows that ebp=esp | |
4314 "movl %ebp, %esp \n\t" | |
3465 | 4315 ); |
4316 } | |
4317 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4318 #warning check for _CIpow |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4319 static double exp_CIpow(double x, double y) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4320 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4321 /*printf("Pow %f %f 0x%Lx 0x%Lx => %f\n", x, y, *((int64_t*)&x), *((int64_t*)&y), pow(x, y));*/ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4322 return pow(x, y); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4323 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4324 |
3465 | 4325 static double exppow(double x, double y) |
4326 { | |
4327 /*printf("Pow %f %f 0x%Lx 0x%Lx => %f\n", x, y, *((int64_t*)&x), *((int64_t*)&y), pow(x, y));*/ | |
4328 return pow(x, y); | |
4329 } | |
4330 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4331 static double expldexp(double x, int expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4332 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4333 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4334 return ldexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4335 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4336 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4337 static double expfrexp(double x, int* expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4338 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4339 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4340 return frexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4341 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4342 |
3465 | 4343 |
4344 | |
4345 static int exp_stricmp(const char* s1, const char* s2) | |
4346 { | |
4347 return strcasecmp(s1, s2); | |
4348 } | |
4349 | |
4350 /* from declaration taken from Wine sources - this fountion seems to be | |
4351 * undocumented in any M$ doc */ | |
4352 static int exp_setjmp3(void* jmpbuf, int x) | |
4353 { | |
4354 //dbgprintf("!!!!UNIMPLEMENTED: setjmp3(%p, %d) => 0\n", jmpbuf, x); | |
4355 //return 0; | |
4356 __asm__ __volatile__ | |
4357 ( | |
4358 //"mov 4(%%esp), %%edx \n\t" | |
4359 "mov (%%esp), %%eax \n\t" | |
4360 "mov %%eax, (%%edx) \n\t" // store ebp | |
4361 | |
4362 //"mov %%ebp, (%%edx) \n\t" | |
4363 "mov %%ebx, 4(%%edx) \n\t" | |
4364 "mov %%edi, 8(%%edx) \n\t" | |
4365 "mov %%esi, 12(%%edx) \n\t" | |
4366 "mov %%esp, 16(%%edx) \n\t" | |
4367 | |
4368 "mov 4(%%esp), %%eax \n\t" | |
4369 "mov %%eax, 20(%%edx) \n\t" | |
4370 | |
4371 "movl $0x56433230, 32(%%edx) \n\t" // VC20 ?? | |
4372 "movl $0, 36(%%edx) \n\t" | |
4373 : // output | |
4374 : "d"(jmpbuf) // input | |
7386 | 4375 : "eax" |
3465 | 4376 ); |
4377 #if 1 | |
4378 __asm__ __volatile__ | |
4379 ( | |
4380 "mov %%fs:0, %%eax \n\t" // unsure | |
4381 "mov %%eax, 24(%%edx) \n\t" | |
4382 "cmp $0xffffffff, %%eax \n\t" | |
4383 "jnz l1 \n\t" | |
4384 "mov %%eax, 28(%%edx) \n\t" | |
4385 "l1: \n\t" | |
4386 : | |
4387 : | |
7386 | 4388 : "eax" |
3465 | 4389 ); |
4390 #endif | |
4391 | |
4392 return 0; | |
4393 } | |
4394 | |
5234 | 4395 static DWORD WINAPI expGetCurrentProcessId(void) |
4396 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4397 dbgprintf("GetCurrentProcessId(void) => %d\n", getpid()); |
5234 | 4398 return getpid(); //(DWORD)NtCurrentTeb()->pid; |
4399 } | |
4400 | |
4401 | |
4402 typedef struct { | |
4403 UINT wPeriodMin; | |
4404 UINT wPeriodMax; | |
4405 } TIMECAPS, *LPTIMECAPS; | |
4406 | |
4407 static MMRESULT WINAPI exptimeGetDevCaps(LPTIMECAPS lpCaps, UINT wSize) | |
4408 { | |
4409 dbgprintf("timeGetDevCaps(%p, %u) !\n", lpCaps, wSize); | |
4410 | |
4411 lpCaps->wPeriodMin = 1; | |
4412 lpCaps->wPeriodMax = 65535; | |
4413 return 0; | |
4414 } | |
4415 | |
4416 static MMRESULT WINAPI exptimeBeginPeriod(UINT wPeriod) | |
4417 { | |
4418 dbgprintf("timeBeginPeriod(%u) !\n", wPeriod); | |
4419 | |
4420 if (wPeriod < 1 || wPeriod > 65535) return 96+1; //TIMERR_NOCANDO; | |
4421 return 0; | |
4422 } | |
4423 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4424 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4425 static MMRESULT WINAPI exptimeEndPeriod(UINT wPeriod) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4426 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4427 dbgprintf("timeEndPeriod(%u) !\n", wPeriod); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4428 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4429 if (wPeriod < 1 || wPeriod > 65535) return 96+1; //TIMERR_NOCANDO; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4430 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4431 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4432 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4433 |
5234 | 4434 static void WINAPI expGlobalMemoryStatus( |
4435 LPMEMORYSTATUS lpmem | |
4436 ) { | |
4437 static MEMORYSTATUS cached_memstatus; | |
4438 static int cache_lastchecked = 0; | |
4439 SYSTEM_INFO si; | |
4440 FILE *f; | |
4441 | |
4442 if (time(NULL)==cache_lastchecked) { | |
4443 memcpy(lpmem,&cached_memstatus,sizeof(MEMORYSTATUS)); | |
4444 return; | |
4445 } | |
4446 | |
4447 #if 1 | |
4448 f = fopen( "/proc/meminfo", "r" ); | |
4449 if (f) | |
4450 { | |
4451 char buffer[256]; | |
4452 int total, used, free, shared, buffers, cached; | |
4453 | |
4454 lpmem->dwLength = sizeof(MEMORYSTATUS); | |
4455 lpmem->dwTotalPhys = lpmem->dwAvailPhys = 0; | |
4456 lpmem->dwTotalPageFile = lpmem->dwAvailPageFile = 0; | |
4457 while (fgets( buffer, sizeof(buffer), f )) | |
4458 { | |
4459 /* old style /proc/meminfo ... */ | |
4460 if (sscanf( buffer, "Mem: %d %d %d %d %d %d", &total, &used, &free, &shared, &buffers, &cached )) | |
4461 { | |
4462 lpmem->dwTotalPhys += total; | |
4463 lpmem->dwAvailPhys += free + buffers + cached; | |
4464 } | |
4465 if (sscanf( buffer, "Swap: %d %d %d", &total, &used, &free )) | |
4466 { | |
4467 lpmem->dwTotalPageFile += total; | |
4468 lpmem->dwAvailPageFile += free; | |
4469 } | |
4470 | |
4471 /* new style /proc/meminfo ... */ | |
4472 if (sscanf(buffer, "MemTotal: %d", &total)) | |
4473 lpmem->dwTotalPhys = total*1024; | |
4474 if (sscanf(buffer, "MemFree: %d", &free)) | |
4475 lpmem->dwAvailPhys = free*1024; | |
4476 if (sscanf(buffer, "SwapTotal: %d", &total)) | |
4477 lpmem->dwTotalPageFile = total*1024; | |
4478 if (sscanf(buffer, "SwapFree: %d", &free)) | |
4479 lpmem->dwAvailPageFile = free*1024; | |
4480 if (sscanf(buffer, "Buffers: %d", &buffers)) | |
4481 lpmem->dwAvailPhys += buffers*1024; | |
4482 if (sscanf(buffer, "Cached: %d", &cached)) | |
4483 lpmem->dwAvailPhys += cached*1024; | |
4484 } | |
4485 fclose( f ); | |
4486 | |
4487 if (lpmem->dwTotalPhys) | |
4488 { | |
4489 DWORD TotalPhysical = lpmem->dwTotalPhys+lpmem->dwTotalPageFile; | |
4490 DWORD AvailPhysical = lpmem->dwAvailPhys+lpmem->dwAvailPageFile; | |
4491 lpmem->dwMemoryLoad = (TotalPhysical-AvailPhysical) | |
4492 / (TotalPhysical / 100); | |
4493 } | |
4494 } else | |
4495 #endif | |
4496 { | |
4497 /* FIXME: should do something for other systems */ | |
4498 lpmem->dwMemoryLoad = 0; | |
4499 lpmem->dwTotalPhys = 16*1024*1024; | |
4500 lpmem->dwAvailPhys = 16*1024*1024; | |
4501 lpmem->dwTotalPageFile = 16*1024*1024; | |
4502 lpmem->dwAvailPageFile = 16*1024*1024; | |
4503 } | |
4504 expGetSystemInfo(&si); | |
4505 lpmem->dwTotalVirtual = si.lpMaximumApplicationAddress-si.lpMinimumApplicationAddress; | |
4506 /* FIXME: we should track down all the already allocated VM pages and substract them, for now arbitrarily remove 64KB so that it matches NT */ | |
4507 lpmem->dwAvailVirtual = lpmem->dwTotalVirtual-64*1024; | |
4508 memcpy(&cached_memstatus,lpmem,sizeof(MEMORYSTATUS)); | |
4509 cache_lastchecked = time(NULL); | |
4510 | |
4511 /* it appears some memory display programs want to divide by these values */ | |
4512 if(lpmem->dwTotalPageFile==0) | |
4513 lpmem->dwTotalPageFile++; | |
4514 | |
4515 if(lpmem->dwAvailPageFile==0) | |
4516 lpmem->dwAvailPageFile++; | |
4517 } | |
4518 | |
4519 /********************************************************************** | |
4520 * SetThreadPriority [KERNEL32.@] Sets priority for thread. | |
4521 * | |
4522 * RETURNS | |
4523 * Success: TRUE | |
4524 * Failure: FALSE | |
4525 */ | |
4526 static WIN_BOOL WINAPI expSetThreadPriority( | |
4527 HANDLE hthread, /* [in] Handle to thread */ | |
4528 INT priority) /* [in] Thread priority level */ | |
4529 { | |
4530 dbgprintf("SetThreadPriority(%p,%d)\n",hthread,priority); | |
4531 return TRUE; | |
4532 } | |
4533 | |
4534 static void WINAPI expExitProcess( DWORD status ) | |
4535 { | |
8451 | 4536 printf("EXIT - code %ld\n",status); |
5234 | 4537 exit(status); |
4538 } | |
4539 | |
4540 static INT WINAPI expMessageBoxA(HWND hWnd, LPCSTR text, LPCSTR title, UINT type){ | |
4541 printf("MSGBOX '%s' '%s' (%d)\n",text,title,type); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4542 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4543 if (type == MB_ICONHAND && !strlen(text) && !strlen(title)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4544 return IDIGNORE; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4545 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4546 return IDOK; |
5234 | 4547 } |
4548 | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4549 /* these are needed for mss1 */ |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4550 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4551 /* defined in stubs.s */ |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4552 void exp_EH_prolog(void); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4553 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4554 #include <netinet/in.h> |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4555 static WINAPI inline unsigned long int exphtonl(unsigned long int hostlong) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4556 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4557 // dbgprintf("htonl(%x) => %x\n", hostlong, htonl(hostlong)); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4558 return htonl(hostlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4559 } |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4560 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4561 static WINAPI inline unsigned long int expntohl(unsigned long int netlong) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4562 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4563 // dbgprintf("ntohl(%x) => %x\n", netlong, ntohl(netlong)); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4564 return ntohl(netlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4565 } |
7386 | 4566 static void WINAPI expVariantInit(void* p) |
4567 { | |
4568 printf("InitCommonControls called!\n"); | |
4569 return; | |
4570 } | |
2779 | 4571 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4572 static int WINAPI expRegisterClassA(const void/*WNDCLASSA*/ *wc) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4573 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4574 dbgprintf("RegisterClassA(%p) => random id\n", wc); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4575 return time(NULL); /* be precise ! */ |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4576 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4577 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4578 static int WINAPI expUnregisterClassA(const char *className, HINSTANCE hInstance) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4579 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4580 dbgprintf("UnregisterClassA(%s, %p) => 0\n", className, hInstance); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4581 return 0; |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4582 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4583 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4584 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4585 /* should be fixed bcs it's not fully strlen equivalent */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4586 static int expSysStringByteLen(void *str) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4587 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4588 dbgprintf("SysStringByteLen(%p) => %d\n", str, strlen(str)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4589 return strlen(str); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4590 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4591 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4592 static int expDirectDrawCreate(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4593 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4594 dbgprintf("DirectDrawCreate(...) => NULL\n"); |
8451 | 4595 return 0; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4596 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4597 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4598 #if 1 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4599 typedef struct tagPALETTEENTRY { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4600 BYTE peRed; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4601 BYTE peGreen; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4602 BYTE peBlue; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4603 BYTE peFlags; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4604 } PALETTEENTRY; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4605 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4606 /* reversed the first 2 entries */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4607 typedef struct tagLOGPALETTE { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4608 WORD palNumEntries; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4609 WORD palVersion; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4610 PALETTEENTRY palPalEntry[1]; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4611 } LOGPALETTE; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4612 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4613 static HPALETTE WINAPI expCreatePalette(CONST LOGPALETTE *lpgpl) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4614 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4615 HPALETTE test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4616 int i; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4617 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4618 dbgprintf("CreatePalette(%x) => NULL\n", lpgpl); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4619 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4620 i = sizeof(LOGPALETTE)+((lpgpl->palNumEntries-1)*sizeof(PALETTEENTRY)); |
8451 | 4621 test = (HPALETTE)malloc(i); |
4622 memcpy((void *)test, lpgpl, i); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4623 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4624 return test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4625 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4626 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4627 static int expCreatePalette(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4628 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4629 dbgprintf("CreatePalette(...) => NULL\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4630 return NULL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4631 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4632 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4633 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4634 static int WINAPI expGetClientRect(HWND win, RECT *r) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4635 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4636 dbgprintf("GetClientRect(0x%x, 0x%x) => 1\n", win, r); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4637 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4638 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4639 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4640 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4641 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4642 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4643 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4644 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4645 typedef struct tagPOINT { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4646 LONG x; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4647 LONG y; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4648 } POINT, *PPOINT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4649 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4650 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4651 static int WINAPI expClientToScreen(HWND win, POINT *p) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4652 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4653 dbgprintf("ClientToScreen(0x%x, 0x%x = %d,%d) => 1\n", win, p, p->x, p->y); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4654 p->x = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4655 p->y = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4656 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4657 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4658 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4659 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4660 /* for m3jpeg */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4661 static int WINAPI expSetThreadIdealProcessor(HANDLE thread, int proc) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4662 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4663 dbgprintf("SetThreadIdealProcessor(0x%x, %x) => 0\n", thread, proc); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4664 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4665 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4666 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4667 static int WINAPI expMessageBeep(int type) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4668 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4669 dbgprintf("MessageBeep(%d) => 1\n", type); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4670 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4671 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4672 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4673 static int WINAPI expDialogBoxParamA(void *inst, const char *name, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4674 HWND parent, void *dialog_func, void *init_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4675 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4676 dbgprintf("DialogBoxParamA(0x%x, 0x%x = %s, 0x%x, 0x%x, 0x%x) => 0x42424242\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4677 inst, name, name, parent, dialog_func, init_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4678 return 0x42424242; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4679 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4680 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4681 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4682 static void *exprealloc(void *ptr, size_t size) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4683 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4684 dbgprintf("realloc(0x%x, %x)\n", ptr, size); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4685 if (!ptr) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4686 return my_mreq(size,0); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4687 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4688 return my_realloc(ptr, size); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4689 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4690 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4691 /* Fake GetOpenFileNameA from comdlg32.dll for ViVD codec */ |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4692 static WIN_BOOL WINAPI expGetOpenFileNameA(/*LPOPENFILENAMEA*/ void* lpfn) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4693 { |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4694 return 1; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4695 } |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4696 |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4697 static double expfloor(double x) |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4698 { |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4699 dbgprintf("floor(%lf)\n", x); |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4700 return floor(x); |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4701 } |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4702 |
1 | 4703 struct exports |
4704 { | |
4705 char name[64]; | |
4706 int id; | |
4707 void* func; | |
4708 }; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
4709 struct libs |
1 | 4710 { |
4711 char name[64]; | |
4712 int length; | |
4713 struct exports* exps; | |
4714 }; | |
4715 | |
4716 #define FF(X,Y) \ | |
3465 | 4717 {#X, Y, (void*)exp##X}, |
4718 | |
4719 struct exports exp_kernel32[]= | |
4720 { | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4721 FF(GetVolumeInformationA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4722 FF(GetDriveTypeA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4723 FF(GetLogicalDriveStringsA,-1) |
3465 | 4724 FF(IsBadWritePtr, 357) |
4725 FF(IsBadReadPtr, 354) | |
4726 FF(IsBadStringPtrW, -1) | |
4727 FF(IsBadStringPtrA, -1) | |
4728 FF(DisableThreadLibraryCalls, -1) | |
4729 FF(CreateThread, -1) | |
4730 FF(CreateEventA, -1) | |
4731 FF(SetEvent, -1) | |
4732 FF(ResetEvent, -1) | |
4733 FF(WaitForSingleObject, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4734 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4735 FF(WaitForMultipleObjects, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4736 FF(ExitThread, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4737 FF(CreateMutexA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4738 FF(ReleaseMutex,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4739 #endif |
3465 | 4740 FF(GetSystemInfo, -1) |
4741 FF(GetVersion, 332) | |
4742 FF(HeapCreate, 461) | |
4743 FF(HeapAlloc, -1) | |
4744 FF(HeapDestroy, -1) | |
4745 FF(HeapFree, -1) | |
4746 FF(HeapSize, -1) | |
4747 FF(HeapReAlloc,-1) | |
4748 FF(GetProcessHeap, -1) | |
4749 FF(VirtualAlloc, -1) | |
4750 FF(VirtualFree, -1) | |
4751 FF(InitializeCriticalSection, -1) | |
4752 FF(EnterCriticalSection, -1) | |
4753 FF(LeaveCriticalSection, -1) | |
4754 FF(DeleteCriticalSection, -1) | |
4755 FF(TlsAlloc, -1) | |
4756 FF(TlsFree, -1) | |
4757 FF(TlsGetValue, -1) | |
4758 FF(TlsSetValue, -1) | |
4759 FF(GetCurrentThreadId, -1) | |
4760 FF(GetCurrentProcess, -1) | |
4761 FF(LocalAlloc, -1) | |
4762 FF(LocalReAlloc,-1) | |
4763 FF(LocalLock, -1) | |
4764 FF(GlobalAlloc, -1) | |
4765 FF(GlobalReAlloc, -1) | |
4766 FF(GlobalLock, -1) | |
4767 FF(GlobalSize, -1) | |
4768 FF(MultiByteToWideChar, 427) | |
4769 FF(WideCharToMultiByte, -1) | |
4770 FF(GetVersionExA, -1) | |
4771 FF(CreateSemaphoreA, -1) | |
4772 FF(QueryPerformanceCounter, -1) | |
4773 FF(QueryPerformanceFrequency, -1) | |
4774 FF(LocalHandle, -1) | |
4775 FF(LocalUnlock, -1) | |
4776 FF(LocalFree, -1) | |
4777 FF(GlobalHandle, -1) | |
4778 FF(GlobalUnlock, -1) | |
4779 FF(GlobalFree, -1) | |
4780 FF(LoadResource, -1) | |
4781 FF(ReleaseSemaphore, -1) | |
4782 FF(FindResourceA, -1) | |
4783 FF(LockResource, -1) | |
4784 FF(FreeResource, -1) | |
4785 FF(SizeofResource, -1) | |
4786 FF(CloseHandle, -1) | |
4787 FF(GetCommandLineA, -1) | |
4788 FF(GetEnvironmentStringsW, -1) | |
4789 FF(FreeEnvironmentStringsW, -1) | |
4790 FF(FreeEnvironmentStringsA, -1) | |
4791 FF(GetEnvironmentStrings, -1) | |
4792 FF(GetStartupInfoA, -1) | |
4793 FF(GetStdHandle, -1) | |
4794 FF(GetFileType, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4795 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4796 FF(GetFileAttributesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4797 #endif |
3465 | 4798 FF(SetHandleCount, -1) |
4799 FF(GetACP, -1) | |
4800 FF(GetModuleFileNameA, -1) | |
4801 FF(SetUnhandledExceptionFilter, -1) | |
4802 FF(LoadLibraryA, -1) | |
4803 FF(GetProcAddress, -1) | |
4804 FF(FreeLibrary, -1) | |
4805 FF(CreateFileMappingA, -1) | |
4806 FF(OpenFileMappingA, -1) | |
4807 FF(MapViewOfFile, -1) | |
4808 FF(UnmapViewOfFile, -1) | |
4809 FF(Sleep, -1) | |
4810 FF(GetModuleHandleA, -1) | |
4811 FF(GetProfileIntA, -1) | |
4812 FF(GetPrivateProfileIntA, -1) | |
4813 FF(GetPrivateProfileStringA, -1) | |
4814 FF(WritePrivateProfileStringA, -1) | |
4815 FF(GetLastError, -1) | |
4816 FF(SetLastError, -1) | |
4817 FF(InterlockedIncrement, -1) | |
4818 FF(InterlockedDecrement, -1) | |
4819 FF(GetTimeZoneInformation, -1) | |
4820 FF(OutputDebugStringA, -1) | |
4821 FF(GetLocalTime, -1) | |
4822 FF(GetSystemTime, -1) | |
7386 | 4823 FF(GetSystemTimeAsFileTime, -1) |
3465 | 4824 FF(GetEnvironmentVariableA, -1) |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
4825 FF(SetEnvironmentVariableA, -1) |
3465 | 4826 FF(RtlZeroMemory,-1) |
4827 FF(RtlMoveMemory,-1) | |
4828 FF(RtlFillMemory,-1) | |
4829 FF(GetTempPathA,-1) | |
4830 FF(FindFirstFileA,-1) | |
4831 FF(FindNextFileA,-1) | |
4832 FF(FindClose,-1) | |
4833 FF(FileTimeToLocalFileTime,-1) | |
4834 FF(DeleteFileA,-1) | |
4835 FF(ReadFile,-1) | |
4836 FF(WriteFile,-1) | |
4837 FF(SetFilePointer,-1) | |
4838 FF(GetTempFileNameA,-1) | |
4839 FF(CreateFileA,-1) | |
4840 FF(GetSystemDirectoryA,-1) | |
4841 FF(GetWindowsDirectoryA,-1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4842 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4843 FF(GetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4844 FF(SetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4845 FF(CreateDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4846 #endif |
5234 | 4847 FF(GetShortPathNameA,-1) |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
4848 FF(GetFullPathNameA,-1) |
3465 | 4849 FF(SetErrorMode, -1) |
4850 FF(IsProcessorFeaturePresent, -1) | |
4851 FF(GetProcessAffinityMask, -1) | |
4852 FF(InterlockedExchange, -1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4853 FF(InterlockedCompareExchange, -1) |
3465 | 4854 FF(MulDiv, -1) |
4855 FF(lstrcmpiA, -1) | |
4856 FF(lstrlenA, -1) | |
4857 FF(lstrcpyA, -1) | |
4858 FF(lstrcatA, -1) | |
4859 FF(lstrcpynA,-1) | |
4860 FF(GetProcessVersion,-1) | |
4861 FF(GetCurrentThread,-1) | |
4862 FF(GetOEMCP,-1) | |
4863 FF(GetCPInfo,-1) | |
4864 FF(DuplicateHandle,-1) | |
4865 FF(GetTickCount, -1) | |
4866 FF(SetThreadAffinityMask,-1) | |
5234 | 4867 FF(GetCurrentProcessId,-1) |
4868 FF(GlobalMemoryStatus,-1) | |
4869 FF(SetThreadPriority,-1) | |
4870 FF(ExitProcess,-1) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4871 {"LoadLibraryExA", -1, (void*)&LoadLibraryExA}, |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4872 FF(SetThreadIdealProcessor,-1) |
1 | 4873 }; |
4874 | |
4875 struct exports exp_msvcrt[]={ | |
3465 | 4876 FF(malloc, -1) |
4877 FF(_initterm, -1) | |
7386 | 4878 FF(__dllonexit, -1) |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4879 FF(_snprintf,-1) |
3465 | 4880 FF(free, -1) |
4881 {"??3@YAXPAX@Z", -1, expdelete}, | |
4882 {"??2@YAPAXI@Z", -1, expnew}, | |
4883 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
4884 FF(strrchr, -1) | |
4885 FF(strchr, -1) | |
4886 FF(strlen, -1) | |
4887 FF(strcpy, -1) | |
9397 | 4888 FF(strncpy, -1) |
3465 | 4889 FF(wcscpy, -1) |
4890 FF(strcmp, -1) | |
4891 FF(strncmp, -1) | |
4892 FF(strcat, -1) | |
4893 FF(_stricmp,-1) | |
4894 FF(_strdup,-1) | |
4895 FF(_setjmp3,-1) | |
4896 FF(isalnum, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4897 FF(isspace, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4898 FF(isalpha, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4899 FF(isdigit, -1) |
3465 | 4900 FF(memmove, -1) |
4901 FF(memcmp, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4902 FF(memset, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4903 FF(memcpy, -1) |
3465 | 4904 FF(time, -1) |
4905 FF(rand, -1) | |
4906 FF(srand, -1) | |
4907 FF(log10, -1) | |
4908 FF(pow, -1) | |
4909 FF(cos, -1) | |
4910 FF(_ftol,-1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4911 FF(_CIpow,-1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4912 FF(ldexp,-1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4913 FF(frexp,-1) |
3465 | 4914 FF(sprintf,-1) |
4915 FF(sscanf,-1) | |
4916 FF(fopen,-1) | |
4917 FF(fprintf,-1) | |
4918 FF(printf,-1) | |
4919 FF(getenv,-1) | |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4920 FF(floor,-1) |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4921 #ifdef MPLAYER |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4922 FF(_EH_prolog,-1) |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4923 #endif |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4924 FF(calloc,-1) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4925 {"ceil",-1,(void*)&ceil}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4926 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4927 {"clock",-1,(void*)&clock}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4928 {"memchr",-1,(void*)&memchr}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4929 {"vfprintf",-1,(void*)&vfprintf}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4930 // {"realloc",-1,(void*)&realloc}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4931 FF(realloc,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4932 {"puts",-1,(void*)&puts} |
1 | 4933 }; |
4934 struct exports exp_winmm[]={ | |
3465 | 4935 FF(GetDriverModuleHandle, -1) |
4936 FF(timeGetTime, -1) | |
4937 FF(DefDriverProc, -1) | |
4938 FF(OpenDriverA, -1) | |
4939 FF(OpenDriver, -1) | |
5234 | 4940 FF(timeGetDevCaps, -1) |
4941 FF(timeBeginPeriod, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4942 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4943 FF(timeEndPeriod, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4944 FF(waveOutGetNumDevs, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4945 #endif |
1 | 4946 }; |
4947 struct exports exp_user32[]={ | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4948 FF(LoadIconA,-1) |
3465 | 4949 FF(LoadStringA, -1) |
4950 FF(wsprintfA, -1) | |
4951 FF(GetDC, -1) | |
4952 FF(GetDesktopWindow, -1) | |
4953 FF(ReleaseDC, -1) | |
4954 FF(IsRectEmpty, -1) | |
4955 FF(LoadCursorA,-1) | |
4956 FF(SetCursor,-1) | |
4957 FF(GetCursorPos,-1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4958 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4959 FF(ShowCursor,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4960 #endif |
3465 | 4961 FF(RegisterWindowMessageA,-1) |
4962 FF(GetSystemMetrics,-1) | |
4963 FF(GetSysColor,-1) | |
4964 FF(GetSysColorBrush,-1) | |
4965 FF(GetWindowDC, -1) | |
4966 FF(DrawTextA, -1) | |
5234 | 4967 FF(MessageBoxA, -1) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4968 FF(RegisterClassA, -1) |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4969 FF(UnregisterClassA, -1) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4970 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4971 FF(GetWindowRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4972 FF(MonitorFromWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4973 FF(MonitorFromRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4974 FF(MonitorFromPoint, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4975 FF(EnumDisplayMonitors, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4976 FF(GetMonitorInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4977 FF(EnumDisplayDevicesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4978 FF(GetClientRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4979 FF(ClientToScreen, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4980 FF(IsWindowVisible, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4981 FF(GetActiveWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4982 FF(GetClassNameA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4983 FF(GetClassInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4984 FF(GetWindowLongA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4985 FF(EnumWindows, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4986 FF(GetWindowThreadProcessId, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4987 FF(CreateWindowExA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4988 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4989 FF(MessageBeep, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4990 FF(DialogBoxParamA, -1) |
1 | 4991 }; |
4992 struct exports exp_advapi32[]={ | |
3465 | 4993 FF(RegCloseKey, -1) |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
4994 FF(RegCreateKeyA, -1) |
3465 | 4995 FF(RegCreateKeyExA, -1) |
4996 FF(RegEnumKeyExA, -1) | |
4997 FF(RegEnumValueA, -1) | |
4998 FF(RegOpenKeyA, -1) | |
4999 FF(RegOpenKeyExA, -1) | |
5000 FF(RegQueryValueExA, -1) | |
5001 FF(RegSetValueExA, -1) | |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
5002 FF(RegQueryInfoKeyA, -1) |
1 | 5003 }; |
5004 struct exports exp_gdi32[]={ | |
3465 | 5005 FF(CreateCompatibleDC, -1) |
5006 FF(CreateFontA, -1) | |
5007 FF(DeleteDC, -1) | |
5008 FF(DeleteObject, -1) | |
5009 FF(GetDeviceCaps, -1) | |
5010 FF(GetSystemPaletteEntries, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5011 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5012 FF(CreatePalette, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5013 FF(GetObjectA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5014 FF(CreateRectRgn, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5015 #endif |
1 | 5016 }; |
5017 struct exports exp_version[]={ | |
3465 | 5018 FF(GetFileVersionInfoSizeA, -1) |
1 | 5019 }; |
128 | 5020 struct exports exp_ole32[]={ |
3465 | 5021 FF(CoCreateFreeThreadedMarshaler,-1) |
5022 FF(CoCreateInstance, -1) | |
5023 FF(CoInitialize, -1) | |
5024 FF(CoTaskMemAlloc, -1) | |
5025 FF(CoTaskMemFree, -1) | |
5026 FF(StringFromGUID2, -1) | |
128 | 5027 }; |
3465 | 5028 // do we really need crtdll ??? |
5029 // msvcrt is the correct place probably... | |
130 | 5030 struct exports exp_crtdll[]={ |
3465 | 5031 FF(memcpy, -1) |
5032 FF(wcscpy, -1) | |
130 | 5033 }; |
2069 | 5034 struct exports exp_comctl32[]={ |
3465 | 5035 FF(StringFromGUID2, -1) |
5036 FF(InitCommonControls, 17) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5037 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5038 FF(CreateUpDownControl, 16) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5039 #endif |
2069 | 5040 }; |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5041 struct exports exp_wsock32[]={ |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5042 FF(htonl,8) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5043 FF(ntohl,14) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5044 }; |
3465 | 5045 struct exports exp_msdmo[]={ |
5046 FF(memcpy, -1) // just test | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5047 FF(MoCopyMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5048 FF(MoCreateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5049 FF(MoDeleteMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5050 FF(MoDuplicateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5051 FF(MoFreeMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5052 FF(MoInitMediaType, -1) |
7386 | 5053 }; |
5054 struct exports exp_oleaut32[]={ | |
5055 FF(VariantInit, 8) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5056 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5057 FF(SysStringByteLen, 149) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5058 #endif |
3465 | 5059 }; |
6359 | 5060 |
5061 /* realplayer8: | |
5062 DLL Name: PNCRT.dll | |
5063 vma: Hint/Ord Member-Name | |
5064 22ff4 615 free | |
5065 2302e 250 _ftol | |
5066 22fea 666 malloc | |
5067 2303e 609 fprintf | |
5068 2305e 167 _adjust_fdiv | |
5069 23052 280 _initterm | |
5070 | |
5071 22ffc 176 _beginthreadex | |
5072 23036 284 _iob | |
5073 2300e 85 __CxxFrameHandler | |
5074 23022 411 _purecall | |
5075 */ | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5076 #ifdef REALPLAYER |
6359 | 5077 struct exports exp_pncrt[]={ |
5078 FF(malloc, -1) // just test | |
5079 FF(free, -1) // just test | |
5080 FF(fprintf, -1) // just test | |
5081 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
5082 FF(_ftol,-1) | |
5083 FF(_initterm, -1) | |
9397 | 5084 {"??3@YAXPAX@Z", -1, expdelete}, |
5085 {"??2@YAPAXI@Z", -1, expnew}, | |
5086 FF(__dllonexit, -1) | |
5087 FF(strncpy, -1) | |
5088 FF(_CIpow,-1) | |
5089 FF(calloc,-1) | |
5090 FF(memmove, -1) | |
6359 | 5091 }; |
7386 | 5092 #endif |
3465 | 5093 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5094 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5095 struct exports exp_ddraw[]={ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5096 FF(DirectDrawCreate, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5097 }; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5098 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5099 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5100 struct exports exp_comdlg32[]={ |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5101 FF(GetOpenFileNameA, -1) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5102 }; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5103 |
1 | 5104 #define LL(X) \ |
3465 | 5105 {#X".dll", sizeof(exp_##X)/sizeof(struct exports), exp_##X}, |
1 | 5106 |
5107 struct libs libraries[]={ | |
3465 | 5108 LL(kernel32) |
5109 LL(msvcrt) | |
5110 LL(winmm) | |
5111 LL(user32) | |
5112 LL(advapi32) | |
5113 LL(gdi32) | |
5114 LL(version) | |
5115 LL(ole32) | |
7386 | 5116 LL(oleaut32) |
3465 | 5117 LL(crtdll) |
5118 LL(comctl32) | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5119 LL(wsock32) |
3465 | 5120 LL(msdmo) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5121 #ifdef REALPLAYER |
6359 | 5122 LL(pncrt) |
7386 | 5123 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5124 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5125 LL(ddraw) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5126 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5127 LL(comdlg32) |
1 | 5128 }; |
7386 | 5129 |
3465 | 5130 static void ext_stubs(void) |
5131 { | |
5132 // expects: | |
5133 // ax position index | |
5134 // cx address of printf function | |
7386 | 5135 #if 1 |
3465 | 5136 __asm__ __volatile__ |
5137 ( | |
7386 | 5138 "push %%edx \n\t" |
5139 "movl $0xdeadbeef, %%eax \n\t" | |
5140 "movl $0xdeadbeef, %%edx \n\t" | |
5141 "shl $5, %%eax \n\t" // ax * 32 | |
5142 "addl $0xdeadbeef, %%eax \n\t" // overwrite export_names | |
5143 "pushl %%eax \n\t" | |
5144 "pushl $0xdeadbeef \n\t" // overwrite called_unk | |
5145 "call *%%edx \n\t" // printf (via dx) | |
5146 "addl $8, %%esp \n\t" | |
5147 "xorl %%eax, %%eax \n\t" | |
5148 "pop %%edx \n\t" | |
5149 : | |
5150 : | |
5151 : "eax" | |
3465 | 5152 ); |
7386 | 5153 #else |
5154 __asm__ __volatile__ | |
5155 ( | |
5156 "push %%edx \n\t" | |
5157 "movl $0, %%eax \n\t" | |
5158 "movl $0, %%edx \n\t" | |
5159 "shl $5, %%eax \n\t" // ax * 32 | |
5160 "addl %0, %%eax \n\t" | |
5161 "pushl %%eax \n\t" | |
5162 "pushl %1 \n\t" | |
5163 "call *%%edx \n\t" // printf (via dx) | |
5164 "addl $8, %%esp \n\t" | |
5165 "xorl %%eax, %%eax \n\t" | |
5166 "pop %%edx \n\t" | |
5167 ::"m"(*export_names), "m"(*called_unk) | |
5168 : "memory", "edx", "eax" | |
5169 ); | |
5170 #endif | |
5171 | |
3465 | 5172 } |
5173 | |
5174 //static void add_stub(int pos) | |
5175 | |
5176 extern int unk_exp1; | |
7386 | 5177 static int pos=0; |
3465 | 5178 static char extcode[20000];// place for 200 unresolved exports |
7386 | 5179 static const char* called_unk = "Called unk_%s\n"; |
3465 | 5180 |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5181 static void* add_stub(void) |
3465 | 5182 { |
7386 | 5183 // generated code in runtime! |
3465 | 5184 char* answ = (char*)extcode+pos*0x30; |
5185 #if 0 | |
5186 memcpy(answ, &unk_exp1, 0x64); | |
5187 *(int*)(answ+9)=pos; | |
5188 *(int*)(answ+47)-=((int)answ-(int)&unk_exp1); | |
5189 #endif | |
5190 memcpy(answ, ext_stubs, 0x2f); // 0x2c is current size | |
7386 | 5191 //answ[4] = 0xb8; // movl $0, eax (0xb8 0x00000000) |
3465 | 5192 *((int*) (answ + 5)) = pos; |
7386 | 5193 //answ[9] = 0xba; // movl $0, edx (0xba 0x00000000) |
5194 *((long*) (answ + 10)) = (long)printf; | |
5195 //answ[17] = 0x05; // addl $0, eax (0x05 0x00000000) | |
5196 *((long*) (answ + 18)) = (long)export_names; | |
5197 //answ[23] = 0x68; // pushl $0 (0x68 0x00000000) | |
5198 *((long*) (answ + 24)) = (long)called_unk; | |
3465 | 5199 pos++; |
5200 return (void*)answ; | |
5201 } | |
2069 | 5202 |
1 | 5203 void* LookupExternal(const char* library, int ordinal) |
5204 { | |
5205 int i,j; | |
5206 if(library==0) | |
5207 { | |
5208 printf("ERROR: library=0\n"); | |
5209 return (void*)ext_unknown; | |
5210 } | |
3465 | 5211 // printf("%x %x\n", &unk_exp1, &unk_exp2); |
1 | 5212 |
13379 | 5213 dbgprintf("External func %s:%d\n", library, ordinal); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5214 |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5215 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5216 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5217 if(strcasecmp(library, libraries[i].name)) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5218 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5219 for(j=0; j<libraries[i].length; j++) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5220 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5221 if(ordinal!=libraries[i].exps[j].id) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5222 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5223 //printf("Hit: 0x%p\n", libraries[i].exps[j].func); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5224 return libraries[i].exps[j].func; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5225 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5226 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5227 |
9592
b20b0c80298b
Fix for truespeech dll, patch by <dimakar(at)yahoo.com>
rtognimp
parents:
9397
diff
changeset
|
5228 #ifndef LOADLIB_TRY_NATIVE |
9897 | 5229 /* hack for truespeech and vssh264*/ |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
5230 if (!strcmp(library, "tsd32.dll") || !strcmp(library,"vssh264dec.dll") || !strcmp(library,"LCMW2.dll")) |
9592
b20b0c80298b
Fix for truespeech dll, patch by <dimakar(at)yahoo.com>
rtognimp
parents:
9397
diff
changeset
|
5231 #endif |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5232 /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5233 { |
7386 | 5234 int hand; |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5235 WINE_MODREF *wm; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5236 void *func; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5237 |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5238 hand = LoadLibraryA(library); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5239 if (!hand) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5240 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5241 wm = MODULE32_LookupHMODULE(hand); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5242 if (!wm) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5243 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5244 FreeLibrary(hand); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5245 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5246 } |
7386 | 5247 func = PE_FindExportedFunction(wm, (LPCSTR) ordinal, 0); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5248 if (!func) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5249 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5250 printf("No such ordinal in external dll\n"); |
7386 | 5251 FreeLibrary((int)hand); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5252 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5253 } |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5254 |
7386 | 5255 printf("External dll loaded (offset: 0x%x, func: %p)\n", |
5256 hand, func); | |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5257 return func; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5258 } |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5259 |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5260 no_dll: |
1 | 5261 if(pos>150)return 0; |
5262 sprintf(export_names[pos], "%s:%d", library, ordinal); | |
7386 | 5263 return add_stub(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5264 } |
1 | 5265 |
5266 void* LookupExternalByName(const char* library, const char* name) | |
5267 { | |
5268 char* answ; | |
5269 int i,j; | |
3465 | 5270 // return (void*)ext_unknown; |
1 | 5271 if(library==0) |
5272 { | |
5273 printf("ERROR: library=0\n"); | |
5274 return (void*)ext_unknown; | |
5275 } | |
5276 if(name==0) | |
5277 { | |
5278 printf("ERROR: name=0\n"); | |
5279 return (void*)ext_unknown; | |
5280 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5281 dbgprintf("External func %s:%s\n", library, name); |
1 | 5282 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) |
5283 { | |
5284 if(strcasecmp(library, libraries[i].name)) | |
5285 continue; | |
5286 for(j=0; j<libraries[i].length; j++) | |
5287 { | |
5288 if(strcmp(name, libraries[i].exps[j].name)) | |
5289 continue; | |
3465 | 5290 // printf("Hit: 0x%08X\n", libraries[i].exps[j].func); |
1 | 5291 return libraries[i].exps[j].func; |
5292 } | |
5293 } | |
9897 | 5294 |
5295 #ifndef LOADLIB_TRY_NATIVE | |
5296 /* hack for vss h264 */ | |
5297 if (!strcmp(library,"vssh264core.dll")) | |
5298 #endif | |
5299 /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ | |
5300 { | |
5301 int hand; | |
5302 WINE_MODREF *wm; | |
5303 void *func; | |
5304 | |
5305 hand = LoadLibraryA(library); | |
5306 if (!hand) | |
5307 goto no_dll_byname; | |
5308 wm = MODULE32_LookupHMODULE(hand); | |
5309 if (!wm) | |
5310 { | |
5311 FreeLibrary(hand); | |
5312 goto no_dll_byname; | |
5313 } | |
5314 func = PE_FindExportedFunction(wm, name, 0); | |
5315 if (!func) | |
5316 { | |
5317 printf("No such name in external dll\n"); | |
5318 FreeLibrary((int)hand); | |
5319 goto no_dll_byname; | |
5320 } | |
5321 | |
5322 printf("External dll loaded (offset: 0x%x, func: %p)\n", | |
5323 hand, func); | |
5324 return func; | |
5325 } | |
5326 | |
5327 no_dll_byname: | |
3465 | 5328 if(pos>150)return 0;// to many symbols |
1 | 5329 strcpy(export_names[pos], name); |
7386 | 5330 return add_stub(); |
1 | 5331 } |
5332 | |
2069 | 5333 void my_garbagecollection(void) |
128 | 5334 { |
5335 #ifdef GARBAGE | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5336 int unfree = 0, unfreecnt = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5337 |
7386 | 5338 int max_fatal = 8; |
3134 | 5339 free_registry(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5340 while (last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5341 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5342 alloc_header* mem = last_alloc + 1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5343 unfree += my_size(mem); |
3465 | 5344 unfreecnt++; |
7386 | 5345 if (my_release(mem) != 0) |
5346 // avoid endless loop when memory is trashed | |
5347 if (--max_fatal < 0) | |
5348 break; | |
128 | 5349 } |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
5350 dbgprintf("Total Unfree %d bytes cnt %d [%p,%d]\n",unfree, unfreecnt, last_alloc, alccnt); |
128 | 5351 #endif |
3134 | 5352 g_tls = NULL; |
5353 list = NULL; | |
128 | 5354 } |