Marton Balint
|
6d009b988b
|
dsound: Convert freqAdjust and freqAcc to integers.
Fixes resampling errors caused by truncating floating point numbers.
|
2014-12-29 22:20:30 +01:00 |
Mark Harmstone
|
25b13178de
|
dsound: Use array for channel volumes.
|
2014-12-29 12:15:50 +01:00 |
Mark Harmstone
|
b7a2f0879c
|
dsound: Remove unused struct entries.
|
2014-12-29 12:14:56 +01:00 |
Andrew Eikum
|
29d1ccc7e2
|
dsound: Don't send notify events before played range.
|
2014-12-19 19:14:15 +01:00 |
Andrew Eikum
|
ee126c96f1
|
dsound: Report buffer notifications in offset order.
|
2014-12-04 14:03:16 +01:00 |
Thomas Faber
|
78b96c8776
|
dsound: Do not call CoUninitialize if CoInitialize failed.
|
2014-07-28 17:21:38 -05:00 |
Nikolay Sivov
|
d789495534
|
dsound/tests: Accept another error code.
|
2014-06-16 09:31:10 +02:00 |
Nikolay Sivov
|
8d178b185d
|
dsound: Remove duplicated parameter check (Coverity).
|
2014-04-14 10:25:55 +02:00 |
Frédéric Delanoy
|
86e2f37ebc
|
dsound/tests: Use wine_dbgstr_guid for printing GUIDs.
|
2014-02-12 19:15:20 +01:00 |
Alexandre Julliard
|
99ef0d6ff0
|
makefiles: Get rid of the MAKE_TEST_RULES variable.
|
2014-01-02 12:13:16 +01:00 |
Alexandre Julliard
|
5e7416e5c8
|
makefiles: Get rid of the MAKE_DLL_RULES variable.
|
2014-01-02 12:08:18 +01:00 |
Alexandre Julliard
|
d08ff3ff19
|
makefiles: Use a single variable for all types of idl files.
|
2013-12-31 18:15:17 +01:00 |
Frédéric Delanoy
|
5ba7f79bad
|
Assorted spelling fixes.
|
2013-12-03 19:41:53 +01:00 |
Andrew Eikum
|
ace3c315b8
|
dsound: Don't change play position if IAudioClient methods fail.
|
2013-11-22 11:34:53 +01:00 |
Frédéric Delanoy
|
c28d619286
|
dsound/tests: Use BOOL type where appropriate.
|
2013-11-13 11:23:17 +01:00 |
Alexandre Julliard
|
c7803b885b
|
makefiles: Add makedep pragmas for registration idl files.
|
2013-11-05 20:38:18 +01:00 |
Michael Stefaniuc
|
4dd5893ad7
|
dsound/tests: Compile with -D__WINESRC__.
|
2013-10-15 14:28:20 +02:00 |
Michael Stefaniuc
|
0e681027a2
|
tests: Compile the tests by default with -D__WINESRC__.
|
2013-10-02 11:04:02 +02:00 |
Michael Stefaniuc
|
9463dba830
|
tests: Use the explicit LoadLibraryA function.
|
2013-10-02 11:02:21 +02:00 |
Andrew Eikum
|
d5e648dc2f
|
dsound: For capture, use MMDevAPI event API instead of timers.
|
2013-08-21 19:55:59 +02:00 |
Andrew Eikum
|
dcaeb6b4fd
|
dsound: Allow multiple buffers to capture from the same device.
|
2013-07-27 11:56:39 -05:00 |
Michael Stefaniuc
|
a158d42c0f
|
dsound/tests: Fix copy&paste error in ok() message.
|
2013-07-02 10:04:15 +02:00 |
Andrew Eikum
|
892068f96c
|
dsound/tests: Fix test that fails on older Windows 2000.
|
2013-05-31 19:15:56 +02:00 |
Andrew Eikum
|
e60e09e2d1
|
dsound: Copy SetFormat format more directly if we're not in PRIMARYWRITE mode.
|
2013-05-29 19:59:56 +02:00 |
Andrew Eikum
|
508b0c9c44
|
dsound: Don't overrun capture buffer.
|
2013-05-16 17:31:31 +02:00 |
Alexandre Julliard
|
5c8ffb795a
|
dsound: Don't bother to delete critical sections at process exit.
|
2013-05-16 12:56:04 +02:00 |
Marcus Meissner
|
81ea726e64
|
dsound: Do not test undefined behaviour (Coverity).
|
2013-05-09 19:24:21 +02:00 |
Michael Stefaniuc
|
624bbd980f
|
dsound/tests: Mark some capture status as broken.
|
2013-04-23 15:35:13 +02:00 |
Michael Stefaniuc
|
7f65281056
|
dsound/tests: Skip tests if there is no default device.
|
2013-04-22 12:39:56 +02:00 |
Michael Stefaniuc
|
621d9e444a
|
Revert "dsound/tests: Primary and secondary buffers use the same IDirectSoundBuffer vtbl.".
This reverts commit 7959778d3f .
This is not always the case on Windows.
|
2013-02-19 10:39:07 +01:00 |
Andrew Talbot
|
7805ff3291
|
dsound: Avoid signed-unsigned integer comparisons.
|
2013-01-16 12:21:35 +01:00 |
Maarten Lankhorst
|
f5abeb8471
|
dsound: Use a thread instead of a timer for greater precision.
|
2012-12-27 18:47:53 +01:00 |
Andrew Talbot
|
b0e95d27a9
|
dsound: Indentation fix.
|
2012-12-17 11:47:38 +01:00 |
Andrew Eikum
|
81d601f56f
|
dsound: Always fill wValidBitsPerSample.
|
2012-12-14 17:37:48 +01:00 |
Maarten Lankhorst
|
79084be3c1
|
dsound: Set dwChannelMask when limiting channels.
|
2012-11-27 16:58:09 +01:00 |
Maarten Lankhorst
|
605cd62c7d
|
dsound: Create a primary_pwfx separately from pwfx.
|
2012-11-22 14:53:14 +01:00 |
Marcus Meissner
|
8107290279
|
dsound: HeapFree secondaries (Coverity).
|
2012-10-29 10:54:59 +01:00 |
Maarten Lankhorst
|
21c4501603
|
dsound: Fix IDirectSoundCaptureBuffer Start/Stop, with tests.
|
2012-10-19 16:52:05 +02:00 |
Detlef Riekenberg
|
b23450e38e
|
dsound/tests: Handle broken E_FAIL of broken AC97 driver.
|
2012-10-16 11:52:27 +02:00 |
Detlef Riekenberg
|
45c56bcc80
|
dsound/tests: Handle broken E_FAIL in dsound8 for AC97.
|
2012-10-16 11:52:21 +02:00 |
Andrew Eikum
|
8ba4090fc3
|
dsound: Don't exit early in mixer thread.
|
2012-10-10 20:34:10 +02:00 |
Marcus Meissner
|
b78744ce31
|
dsound: Skip unknown sizes in tests (Coverity).
|
2012-10-03 16:35:00 +02:00 |
Michael Stefaniuc
|
cea6329483
|
dsound: DirectSoundDevice_RemoveBuffer() cannot fail.
|
2012-09-26 10:58:48 +02:00 |
Michael Stefaniuc
|
4e06eead8f
|
dsound: Don't bother shrinking the secondary buffer list.
|
2012-09-26 10:58:43 +02:00 |
Andrew Eikum
|
b202b9f72d
|
dsound: Don't require WAVE_FORMAT_EXTENSIBLE for non-16-bit formats.
Fix proposed by Andrew Nguyen.
|
2012-09-18 10:19:15 +02:00 |
Michael Stefaniuc
|
1545645484
|
dsound/tests: Avoid a crash on a Win2k box.
|
2012-09-18 10:17:45 +02:00 |
Michael Stefaniuc
|
34b7e83357
|
dsound: Improve the IDirectSoundCaptureBuffer::GetObjectInPath stub.
|
2012-09-18 10:17:35 +02:00 |
Michael Stefaniuc
|
bee1573cb7
|
dsound: Get rid of an unused macro.
|
2012-09-14 15:41:36 +02:00 |
Michael Stefaniuc
|
1440b25267
|
dsound: Inline some of the IDirectSound helpers.
|
2012-09-06 15:45:31 +02:00 |
Michael Stefaniuc
|
ebf33fff47
|
dsound: Move the capture structs declarations to the .c file.
|
2012-08-31 09:54:47 +02:00 |
Jacek Caban
|
3f353e0025
|
dsound: Use proper helpers for iface calls.
|
2012-08-27 19:46:07 +02:00 |
Michael Stefaniuc
|
1555aebf1e
|
dsound: Cleanup IKsPrivatePropertySetImpl_Create().
|
2012-08-24 10:25:58 +02:00 |
Francois Gouget
|
e2c50d762c
|
dsound: Make dumpCooperativeLevel() static.
|
2012-08-21 17:47:47 +02:00 |
Michael Stefaniuc
|
b522dc66f7
|
dsound: Move the QI implementation from IDirectSoundFullDuplex to IUnknown.
|
2012-08-16 11:40:01 +02:00 |
Michael Stefaniuc
|
0d33e204d1
|
dsound: Aggregate IDirectSoundCapture8 instead of wrapping it.
|
2012-08-16 11:39:54 +02:00 |
Michael Stefaniuc
|
850b294efa
|
dsound: Add COM aggregation to DirectSoundCapture for internal use.
|
2012-08-16 11:39:49 +02:00 |
Michael Stefaniuc
|
ac3cd73ca2
|
dsound: Aggregate IDirectSound8 instead of wrapping it.
|
2012-08-16 11:39:43 +02:00 |
Michael Stefaniuc
|
9cb53818e8
|
dsound: Add COM aggregation to DirectSound for internal use.
|
2012-08-16 11:39:36 +02:00 |
Michael Stefaniuc
|
bd4c67396b
|
dsound: Merge IUnknown into the main DirectSoundFullDuplex object.
|
2012-08-16 11:39:26 +02:00 |
Michael Stefaniuc
|
6692f97e01
|
dsound: Add an object refcount for DirectSoundFullDuplex.
|
2012-08-16 11:39:14 +02:00 |
Michael Stefaniuc
|
023a19d931
|
dsound: Pass the object instead of ifaces to helpers.
|
2012-08-16 11:39:08 +02:00 |
Michael Stefaniuc
|
8588260eef
|
dsound: COM cleanup for the IDirectSoundFullDuplex iface.
|
2012-08-16 11:39:01 +02:00 |
Michael Stefaniuc
|
f6f8123c6b
|
dsound: Cleanup error handling in IDirectSoundFullDuplex::Initialize().
|
2012-08-16 11:38:52 +02:00 |
Michael Stefaniuc
|
885e205ade
|
dsound: Cleanup the DirectSoundFullDuplex create functions.
|
2012-08-16 11:38:44 +02:00 |
Michael Stefaniuc
|
0aeaa83a22
|
dsound/tests: Add DirectSoundFullDuplex COM tests.
|
2012-08-16 11:38:36 +02:00 |
Michael Stefaniuc
|
598cc8f44a
|
dsound/tests: Refcount tests for IDirectSoundCapture / IUnknown.
|
2012-08-16 11:38:23 +02:00 |
Michael Stefaniuc
|
9383affe87
|
dsound: IDirectSoundCapture / IUnknown use separate refcounts.
|
2012-08-16 11:38:17 +02:00 |
Michael Stefaniuc
|
b8ffb4930f
|
dsound: Merge the DirectSoundCapture create functions.
|
2012-08-16 11:38:08 +02:00 |
Michael Stefaniuc
|
b18bc659d6
|
dsound: Avoid a TRUE:FALSE conditional expression.
|
2012-08-14 11:59:26 +02:00 |
Francois Gouget
|
4d24132ea4
|
dsound/tests: Trace the number of tested DirectSound drivers.
|
2012-08-13 11:52:10 +02:00 |
Francois Gouget
|
ed7faad1ed
|
dsound/tests: Clarify some skip() traces.
|
2012-08-13 11:52:00 +02:00 |
Michael Stefaniuc
|
4c7e608d5c
|
dsound: Get rid of the DSOUND_QueryInterface() helper.
|
2012-07-19 16:01:48 +02:00 |
Michael Stefaniuc
|
9cc62d321c
|
dsound: Handle IDirectSound by the IDirectSound8 implementation.
|
2012-07-19 16:01:48 +02:00 |
Michael Stefaniuc
|
6fecd3d642
|
dsound: Merge IDirectSound8 into the main DirectSound object.
|
2012-07-19 16:01:47 +02:00 |
Michael Stefaniuc
|
db5344e438
|
dsound: Drop a redundant 'IDirectSound8' from the method names.
|
2012-07-19 16:01:47 +02:00 |
Michael Stefaniuc
|
bf4481d3f0
|
dsound: Merge the DirectSound create functions.
|
2012-07-19 16:01:46 +02:00 |
Michael Stefaniuc
|
8978a4b51b
|
dsound: Merge IUnknown into the main DirectSound object.
|
2012-07-19 16:01:45 +02:00 |
Michael Stefaniuc
|
478191c059
|
dsound: Cleanup IDirectSoundImpl_Create() and move it.
|
2012-07-19 16:01:45 +02:00 |
Michael Stefaniuc
|
a565c0fadf
|
dsound: Rename the DirectSound object refcount to "numIfaces".
|
2012-07-19 16:01:44 +02:00 |
Michael Stefaniuc
|
4992e6a515
|
dsound: Merge the two IUnknown/IDirectSound implementations for DirectSound.
|
2012-07-19 16:01:43 +02:00 |
Michael Stefaniuc
|
e236a3c2d5
|
dsound/tests: Add IDirectSound refcount and COM aggregation tests.
|
2012-07-19 16:01:43 +02:00 |
Andrew Eikum
|
bf263a347d
|
dsound: Fail if app requests 3D buffer interface on a non-3D buffer.
|
2012-06-14 18:20:29 +02:00 |
Andrew Eikum
|
1cc9ecb558
|
dsound: Don't use IAudioClock::GetPosition to determine buffer fullness.
|
2012-05-16 18:30:18 +02:00 |
Andrew Eikum
|
98c653bc8b
|
dsound: Resample to float, not device format.
|
2012-05-15 16:26:31 +02:00 |
Andrew Eikum
|
20356f7458
|
dsound: Compute mix buffer's size more accurately.
|
2012-05-15 11:18:07 +02:00 |
Andrew Eikum
|
5cce1d9da2
|
dsound: Get rid of redundant primary_mixpos member.
|
2012-05-15 11:17:53 +02:00 |
Andrew Eikum
|
e0ccd9e399
|
dsound: Change mix_buffer to float instead of INT.
|
2012-05-15 11:17:46 +02:00 |
Andrew Eikum
|
8327e6f423
|
dsound: Ensure primary buffer's buffer is large enough to hold the entire prebuffer.
|
2012-05-14 19:58:54 +02:00 |
Andrew Eikum
|
7dce1418ff
|
dsound: Base fragment size off of the MMDevice's period.
|
2012-05-14 19:58:41 +02:00 |
Andrew Eikum
|
1053bfb48d
|
dsound: Express buffer positions in terms of bytes, not fragments.
|
2012-05-14 19:58:32 +02:00 |
Andrew Eikum
|
2c6087457b
|
dsound: Remove minlen, since we always mix full chunks anyway.
|
2012-05-14 19:58:24 +02:00 |
Andrew Eikum
|
f0be44c82d
|
dsound: Don't destroy primary buffer until device is released.
|
2012-05-09 17:49:33 +02:00 |
Alexander E. Patrakov
|
275dfb83f2
|
dsound: Added a windowed-sinc resampler.
|
2012-05-08 09:29:47 +02:00 |
Andrew Eikum
|
4354be123c
|
dsound: Don't derive the secondary position from the primary position.
|
2012-05-02 12:00:02 +02:00 |
Andrew Eikum
|
f393a98a8a
|
dsound: Convert from fixed to floating point.
|
2012-05-02 11:59:58 +02:00 |
Alexander E. Patrakov
|
93a0ca7c6c
|
dsound: Clean up channels.
|
2012-05-01 19:16:23 +02:00 |
Alexander E. Patrakov
|
ab4ef6636d
|
dsound: Clean up cp_fields.
|
2012-05-01 19:16:00 +02:00 |
Alexander E. Patrakov
|
f88f3d4149
|
dsound: Replace convert() functions with get() and put().
|
2012-05-01 19:15:49 +02:00 |
Alexander E. Patrakov
|
0195e01990
|
dsound: Clean up MixToTemporary().
|
2012-05-01 19:15:12 +02:00 |
Andrew Eikum
|
3ef92af6a8
|
dsound: Map MMDevAPI error to DSound error.
|
2012-04-27 11:59:44 +02:00 |
Andrew Eikum
|
1b21fe827f
|
mmddk.h: Remove unused, Wine-specific WinMM defines.
|
2012-04-03 17:53:37 +02:00 |
Andrew Eikum
|
552433cf9e
|
dsound: Validate and correct wValidBitsPerSample in primary buffer SetFormat.
|
2012-04-02 18:27:14 +02:00 |
Michael Stefaniuc
|
0872572a6d
|
dsound/tests: Fix the capture COM tests for older Win2k versions.
|
2012-02-15 19:17:37 +01:00 |
Andrew Eikum
|
9d06d41e37
|
dsound: Add some more DSCAPS flags.
|
2012-02-14 17:59:29 +01:00 |
Austin English
|
c6bda4dc17
|
dsound: Remove an unnecessary assignment (LLVM/Clang).
|
2012-01-31 13:47:39 +01:00 |
Michael Stefaniuc
|
84d5317302
|
dsound: Remove the now obsolete IDirectSoundBufferImpl_Destroy().
|
2012-01-20 13:34:20 +01:00 |
Michael Stefaniuc
|
c7f5f10aab
|
dsound: Merge IDirectSoundNotify into the secondary buffer object.
|
2012-01-20 13:33:33 +01:00 |
Michael Stefaniuc
|
e0d81e55e2
|
dsound: Merge IDirectSound3DBuffer into the secondary buffer object.
|
2012-01-19 21:08:49 +01:00 |
Michael Stefaniuc
|
a5d2120021
|
dsound: Get rid of some LPDIRECTSOUND3DBUFFER usage.
|
2012-01-19 21:08:49 +01:00 |
Michael Stefaniuc
|
3ec0b056d5
|
dsound: Support IKsPropertySet in the primary buffer too.
|
2012-01-17 11:53:25 +01:00 |
Michael Stefaniuc
|
48ca5924b4
|
dsound: Merge IKsPropertySet into the secondary buffer object.
|
2012-01-17 11:53:19 +01:00 |
Michael Stefaniuc
|
fd04e770f1
|
dsound: Drop "Buffer" from the IKsPropertySet method names.
|
2012-01-17 11:53:05 +01:00 |
Andrew Eikum
|
9cf7f95483
|
dsound: Lock the source buffer during duplication.
|
2012-01-17 11:51:25 +01:00 |
Andrew Eikum
|
6d391df4aa
|
dsound: Don't launch a separate thread for the mmdevapi enumerator.
|
2012-01-16 19:32:51 +01:00 |
Michael Stefaniuc
|
5959e1d48c
|
dsound: Use AddRef to set the refcounts at object creation.
|
2012-01-16 12:45:33 +01:00 |
Michael Stefaniuc
|
37df4671cb
|
dsound: Merge IDirectSound3DListener into the primary buffer object.
|
2012-01-16 12:45:33 +01:00 |
Michael Stefaniuc
|
044edbb625
|
dsound: Get rid of some LPDIRECTSOUNDBUFFER usage.
|
2012-01-16 12:45:33 +01:00 |
Jörg Höhle
|
999423d34e
|
dsound: Vista/XP SP2 reworked the Speaker Configuration.
|
2012-01-13 18:17:31 +01:00 |
Michael Stefaniuc
|
66361f1bd5
|
dsound/tests: Add some COM tests for capture.
|
2012-01-12 15:52:51 +01:00 |
Michael Stefaniuc
|
93bfa2b5be
|
dsound/tests: Sanitize START_TEST() in capture.c.
|
2012-01-12 15:52:50 +01:00 |
Michael Stefaniuc
|
4ac20cbc0f
|
dsound/tests: Remove some returns in the capture buffer tests.
|
2012-01-12 15:52:50 +01:00 |
Michael Stefaniuc
|
a3120ce80e
|
dsound: Make capture behave like native in regards to COM aggregation.
|
2012-01-12 15:52:42 +01:00 |
Michael Stefaniuc
|
13a4b03b44
|
dsound: Merge IDirectSoundNotify into the capture buffer object.
|
2012-01-12 12:38:41 +01:00 |
Michael Stefaniuc
|
3dac0e5a4f
|
dsound: Add an extra refcount for the capture buffer object.
|
2012-01-12 12:38:34 +01:00 |
Michael Stefaniuc
|
e8f7ddf774
|
dsound: Drop "Capture" from the IDirectSoundNotify method names.
|
2012-01-12 12:38:28 +01:00 |
Michael Stefaniuc
|
f1d7414971
|
dsound: COM cleanup for the IDirectSoundCaptureBuffer8 iface.
|
2012-01-12 12:38:21 +01:00 |
Jörg Höhle
|
35cdb8bb22
|
dsound: Fix the computation of the mixer position in bytes.
|
2012-01-03 19:27:16 +01:00 |
Alexander E. Patrakov
|
663bc47602
|
dsound: Always resample buffers in mixer thread.
|
2011-12-29 17:56:48 +01:00 |
André Hentschel
|
2b981177d3
|
dsound: Use if(0) instead of #if 0 to make sure code still compiles.
|
2011-12-27 16:55:06 +01:00 |
Francois Gouget
|
c64ce9d0ff
|
dsound: Remove mmErr(). It is not used anymore.
|
2011-12-06 17:52:54 +01:00 |
Andrew Eikum
|
287a6e8473
|
dsound: Validate format in primary buffer's SetFormat().
|
2011-12-05 12:23:37 +01:00 |
Andrew Eikum
|
c59ecdcefb
|
dsound: Don't specify period size for the IAudioClient.
We don't actually care what period size gets used (in fact, docs say the
parameter is entirely ignored in Shared mode).
|
2011-11-15 19:37:37 +01:00 |
Francois Gouget
|
68dc1468cb
|
dsound: Give a name to the critical sections, make them static and delete them when unloading the dll.
|
2011-11-15 19:37:35 +01:00 |
Francois Gouget
|
0caef81de2
|
dsound: Unset Spare[0] before deleting non-static critical sections.
|
2011-11-14 15:25:27 +01:00 |
Andrew Eikum
|
c8c6cc97bc
|
dsound: Always enumerate the default device first.
|
2011-10-21 12:11:39 +02:00 |
Andrew Eikum
|
9b15c17376
|
dsound: Don't claim to support hardware buffers.
|
2011-10-20 11:03:40 +02:00 |
Andrew Eikum
|
6a7c2f66e0
|
dsound: Don't make the capture buffer object address public until it is prepared.
|
2011-10-18 15:11:40 +02:00 |
Andrew Eikum
|
c60583ab8b
|
dsound: Fix type conversion problems.
|
2011-10-18 15:11:32 +02:00 |
Marcus Meissner
|
587cd82013
|
dsound: Remove dead code from mixer (Coverity).
|
2011-10-17 17:45:05 +02:00 |
Marcus Meissner
|
07d72eb570
|
dsound: Added missing LeaveCriticalSection (Coverity).
|
2011-10-17 17:45:03 +02:00 |
Andrew Eikum
|
9d29d9f766
|
dsound: Request a more exact buffer size from MMDevAPI.
|
2011-10-13 19:57:18 +02:00 |
Andrew Talbot
|
1f1a97a9b5
|
dsound: Remove unneeded address-of operator from function name.
|
2011-10-10 13:30:25 +02:00 |
Michael Stefaniuc
|
f0a3a09d0e
|
dsound: COM cleanup for the IDirectSoundCapture iface.
|
2011-10-08 17:38:40 +02:00 |
Andrew Eikum
|
ecd13dcbef
|
dsound: Fix fragment position calculations.
|
2011-10-06 12:28:22 -05:00 |
Andrew Eikum
|
cec8e0d73a
|
dsound: Remove a few unused variables.
|
2011-10-05 17:31:27 -05:00 |
Marcus Meissner
|
1533965e8c
|
dsound: Make a function static, remove a no longer used array.
|
2011-10-04 15:21:15 -05:00 |
Marcus Meissner
|
a664424c19
|
dsound: Mark enum_callback and search_callback static.
|
2011-10-03 15:51:17 -05:00 |
Andrew Eikum
|
6c33e87259
|
dsound: Eliminate leftover driver structures.
|
2011-09-28 10:59:31 +02:00 |
Andrew Eikum
|
8856ea79f3
|
dsound: Reimplement PropertySet on mmdevapi.
|
2011-09-27 16:53:59 +02:00 |
Andrew Eikum
|
3735ecac21
|
dsound: Reimplement capturing devices on mmdevapi.
|
2011-09-27 16:53:59 +02:00 |