Commit Graph

337 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes e4a5af6c0d dmime: Trace dwGroupBits parameter consistently.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-08 23:38:41 +01:00
Alistair Leslie-Hughes 7d954f2335 dmime/tests: Break out of loop if we fail to get segment pointer.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-04 23:16:25 +02:00
Alistair Leslie-Hughes 15bf3eee2c dmime/tests: Add a notification_type test.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-03 22:58:07 +02:00
Alistair Leslie-Hughes 955ac88849 dmime: Always set a minimum timeout in IDirectMusicPerformance8::SetNotificationHandle.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-02 23:45:08 +02:00
Alistair Leslie-Hughes ceabad19b8 dmime: Improved tracing of the DMUS_OBJECTDESC structure.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-30 22:24:28 +02:00
Alistair Leslie-Hughes eabb3d444c dsound: Primary buffer doesn't support flag DSBCAPS_CTRLFX.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40740
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-27 14:50:23 +02:00
Alexandre Julliard 9cb66f8dfe dmime: Build with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-31 08:59:56 +02:00
Michael Stefaniuc 6b76648a8b dmime/tests: Test the return value of IDirectMusic_SetDirectSound().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 22:10:47 +01:00
Sven Baars 8f3a474655 dmime/tests: Fix a memory leak (Valgrind).
Signed-off-by: Sven Baars <sven.wine@gmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-29 21:38:10 +01:00
Michael Stefaniuc 4059759ccd dmime: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-23 22:25:41 +02:00
Michael Stefaniuc 885bd810e2 dmime: Remove unused impl_from_ helpers.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 10:15:59 +02:00
Michael Stefaniuc c8e493cb0c dmime: Don't crash when DMSegment loads a MIDI file.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31829
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-17 08:41:54 +02:00
Michael Stefaniuc 3ee58034ad dmime: Reimplement the track form parser.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-12 11:29:54 +02:00
Michael Stefaniuc 23629d069a dmime: Simplify the track list parser.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-12 11:29:52 +02:00
Michael Stefaniuc 7b5668a6e7 include: Make ARRAY_SIZE() available in wine/test.h.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-25 12:09:17 +02:00
Francois Gouget d5784736aa dmime: Add a trailing '\n' to a FIXME().
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-19 09:23:38 +02:00
Francois Gouget c5023aea7e dmime: Make IDirectMusicUtils_IPersistStream_ParseDescGeneric() static.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-18 22:03:38 +02:00
Zebediah Figura 54e27c17ef dmime: Call interface methods properly.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-03 20:46:01 +02:00
Michael Stefaniuc bb88427e4e dmime: Reimplement the segment form parser.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-16 10:47:38 +01:00
Michael Stefaniuc 117a2081d5 dmime: The descriptor is already parsed for the segment form.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-16 10:47:36 +01:00
Michael Stefaniuc b73c4ec440 dmime: Reimplement IPersistStream_Load() for DMSegment.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-16 10:47:33 +01:00
Andrey Gusev f80efd4460 dmime: Fix misplaced parenthesis.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-16 01:00:04 +01:00
Michael Stefaniuc a783d2a397 dmime/tests: Add an invalid stream test.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-15 12:18:45 +01:00
Michael Stefaniuc 83c078b0ab dmime/tests: Fix an IStream use after free and a leak.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-15 12:18:43 +01:00
Michael Stefaniuc a35d4c77ca dmime: Stop pretending to Load() the 'WAVE' form.
It doesn't make sense to forward to DirectSoundWave anyway as that would
require the totally undocumented interface
{69e934e4-97f1-4f1d-88e8-f2ac88671327}

Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-14 15:27:59 +01:00
Michael Stefaniuc da4318b291 dmime: Use ParseDescriptor() instead of reimplementing it.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-13 20:35:29 +01:00
Michael Stefaniuc 387a9f7038 dmime/tests: Add ParseDescriptor NULL pointer tests.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-12 20:32:02 +01:00
Michael Stefaniuc 156aceebbe dmime: Reimplement ParseDescriptor for DMGraph.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-12 20:31:58 +01:00
Michael Stefaniuc bdbd2e188c dmime: Reimplement ParseDescriptor for DMAudioPathConfig.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-12 20:31:55 +01:00
Michael Stefaniuc 0fa08f4793 dmime: Add a generic ParseDescriptor helper and use it for DMSegment.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-12 20:31:51 +01:00
Michael Stefaniuc 07fd2ef372 dmusic/tests: Check forms 'DMAP' and 'DMTG' in ParseDescriptor too.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-06 04:40:48 -06:00
Michael Stefaniuc 6d74b1ebed dmime/tests: Add IDirectMusicObject::ParseDescriptor() tests.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-02 10:54:20 +01:00
Alistair Leslie-Hughes 9c949389f6 dmime: Rename IPersistStreamImpl_Load functions.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-05 13:42:25 +02:00
Alistair Leslie-Hughes f62a891385 dmime: Support more interfaces in IDirectMusicAudioPath.GetObjectInPath.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-28 17:15:42 +02:00
Alistair Leslie-Hughes d5380f0d00 dmime: Add TRACE to IDirectMusicSegment8 QueryInterface.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-28 11:30:33 +02:00
Michael Stefaniuc 14f899317a dmime: Initialize dmusic in InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-12 18:01:53 +02:00
Michael Stefaniuc 3505137d24 dmime: Add proper error handling to InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-12 18:01:51 +02:00
Michael Stefaniuc 01c6b4fe64 dmime: Forward Init() to InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-11 10:17:49 -05:00
Michael Stefaniuc 3236e4ccab dmime: Finish the cleanup of InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-11 10:17:49 -05:00
Michael Stefaniuc 26011d2d3e dmime: Do not use Init() from InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-11 10:17:49 -05:00
Michael Stefaniuc 3a145ac92b dmime: Finish the reindentation in CloseDown().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-11 10:17:49 -05:00
Michael Stefaniuc 9572b5f6d3 dmime: Avoid a temporary variable in IDirectMusicPerformance8Impl_InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-11 10:17:49 -05:00
Michael Stefaniuc a2685a8bc0 dmime: Simplify the check if the performance was initialized.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-11 10:17:49 -05:00
Michael Stefaniuc 195280bee3 dmime/tests: Add refcount test for generated dmusic/dsound.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-11 10:17:49 -05:00
Michael Stefaniuc 36a88d2841 dmusic: Implement IDirectMusic8::SetDirectSound().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-10 09:16:00 -05:00
Michael Stefaniuc 9a90a3e8e5 dmime: Properly use SetCooperativeLevel() on the dsound ifaces we create.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-04 17:26:04 +02:00
Michael Stefaniuc f221298e61 dmime/tests: Add more InitAudio() tests.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-04 17:25:58 +02:00
Michael Stefaniuc a306577803 dmime/tests: Use simpler variable names in test_InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-04 17:25:55 +02:00
Nikolay Sivov f0fb2f16ca dmusic/tests: Use void* instead of void** type value for outer argument.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-24 20:30:30 +02:00
Huw Davies 5864ef417e dmime/tests: Skip the tests if InitAudio fails for any reason.
Fixes failures on Windows 10.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-13 14:51:02 +01:00
Michael Stefaniuc 8788061b10 dmime: Avoid using the COM method implementations directly.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-01 20:47:47 +09:00
Michael Stefaniuc 07cee87e8f dmime: Use debugstr_guid() to trace a REFIID.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-26 20:33:18 +09:00
Michael Stefaniuc 5433a2c054 dmime: Don't set DSBCAPS_CTRLPAN together with DSBCAPS_CTRL3D.
Troubleshooted by Michael Müller.
Fixes a regression caused by 0e5dcc2c84.

Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-11 19:54:16 +09:00
Michael Stefaniuc f78ed39b98 dmime: Use the generic IPersistStream for DMTempoTrack. 2015-07-06 14:49:41 +09:00
Michael Stefaniuc ee09310345 dmime: Remove the extraneous IUnknown from DMTempoTrack. 2015-07-06 14:49:41 +09:00
Michael Stefaniuc 3ef8e01517 dmime: COM cleanup for IDirectMusicTrack of DMTempoTrack. 2015-07-06 14:49:41 +09:00
Michael Stefaniuc cfd84f1662 dmime: Use the generic IPersistStream for DMSegTriggerTrack. 2015-07-06 14:49:41 +09:00
Michael Stefaniuc 0c0df2f8d2 dmime: Remove the extraneous IUnknown from DMSegTriggerTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-06 14:49:41 +09:00
Michael Stefaniuc 360a24670f dmime: COM cleanup for IDirectMusicTrack of DMSegTriggerTrack. 2015-07-06 14:49:40 +09:00
Michael Stefaniuc 3de79096aa dmime/tests: Add some basic IDirectMusicTrack8 tests. 2015-07-06 14:49:40 +09:00
Michael Stefaniuc 8e959e1203 dmime: Implement the remaining E_NOTIMPL methods of IDirectMusicTrack8. 2015-07-06 14:49:40 +09:00
Michael Stefaniuc 0789ddc322 dmime: Use the generic IPersistStream for DMWaveTrack. 2015-07-03 22:57:58 +09:00
Michael Stefaniuc f70498f121 dmime: Remove the extraneous IUnknown from DMWaveTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-03 22:57:53 +09:00
Michael Stefaniuc 861081be65 dmime: COM cleanup for IDirectMusicTrack of DMWaveTrack. 2015-07-03 22:57:49 +09:00
Michael Stefaniuc b905999761 dmime: Implement the E_NOTIMPL methods in DMWaveTrack. 2015-07-03 22:57:44 +09:00
Michael Stefaniuc 4a9eb8bfe0 dmime: Use the generic IPersistStream for DMParamControlTrack. 2015-07-03 22:57:40 +09:00
Michael Stefaniuc 22184e3694 dmime: Remove the extraneous IUnknown from DMParamControlTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-03 22:57:36 +09:00
Michael Stefaniuc 243ff86fbf dmime: COM cleanup for IDirectMusicTrack of DMParamControlTrack. 2015-07-03 22:57:32 +09:00
Michael Stefaniuc 10f3d166a9 dmime: Implement the E_NOTIMPL methods in DMParamControlTrack. 2015-07-03 22:57:28 +09:00
Michael Stefaniuc aad75398dd dmime: Use the generic IPersistStream for DMLyricsTrack. 2015-07-03 22:57:23 +09:00
Michael Stefaniuc 696168cc00 dmime: Remove the extraneous IUnknown from DMLyricsTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-03 22:57:19 +09:00
Michael Stefaniuc ac277120ba dmime: COM cleanup for IDirectMusicTrack of DMLyricsTrack. 2015-07-03 22:57:14 +09:00
Michael Stefaniuc 1637360fa8 dmime: Implement the E_NOTIMPL methods in DMLyricsTrack. 2015-07-03 22:57:09 +09:00
Michael Stefaniuc 64e8b6c03a dmime: Use the generic IPersistStream for DMSysExTrack. 2015-07-03 22:57:05 +09:00
Michael Stefaniuc b9360bd999 dmime: Remove the extraneous IUnknown from DMSysExTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-03 22:57:00 +09:00
Michael Stefaniuc 9a47a46a95 dmime: COM cleanup for IDirectMusicTrack of DMSysExTrack. 2015-07-03 22:56:54 +09:00
Michael Stefaniuc ac18130e76 dmime: Use the generic IPersistStream for DMSeqTrack. 2015-07-03 22:56:50 +09:00
Michael Stefaniuc 7da799a26f dmime: Remove the extraneous IUnknown from DMSeqTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-03 22:56:44 +09:00
Michael Stefaniuc 1b1d95e9d6 dmime: COM cleanup for IDirectMusicTrack of DMSeqTrack. 2015-07-03 22:56:39 +09:00
Michael Stefaniuc 9b4ed8858f dmime: Implement the E_NOTIMPL methods of IDMTrack8 for DMSysExTrack. 2015-07-03 22:56:32 +09:00
Michael Stefaniuc 4a7664275f dmime: Implement the E_NOTIMPL methods of IDMTrack8 for DMSeqTrack. 2015-07-03 22:56:26 +09:00
Michael Stefaniuc 7123c74532 dmime: Use the generic IPersistStream for DMTimeSigTrack. 2015-07-02 19:16:10 +09:00
Michael Stefaniuc ad81735d05 dmime: Remove the extraneous IUnknown from DMTimeSigTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-02 19:16:08 +09:00
Michael Stefaniuc dd1dc8cc81 dmime: COM cleanup for IDirectMusicTrack of DMTimeSigTrack. 2015-07-02 19:16:06 +09:00
Michael Stefaniuc 5bf9d04581 dmime: Use the generic IPersistStream for DMMarkerTrack. 2015-07-02 19:16:04 +09:00
Michael Stefaniuc ef6a803592 dmime: Remove the extraneous IUnknown from DMMarkerTrack.
Also lock/unlock the module only on creation/destruction of the object.
2015-07-02 19:16:02 +09:00
Michael Stefaniuc d487e5e6ce dmime: COM cleanup for IDirectMusicTrack of DMMarkerTrack. 2015-07-02 19:16:00 +09:00
Michael Stefaniuc 5525f5d0fa dmime/tests: Deal with DMTrack objects without IDirectMusicTrack8. 2015-07-02 19:15:58 +09:00
Michael Stefaniuc edfa74fe45 dmime: DMTimeSigTrack doesn't have IDirectMusicTrack8. 2015-07-02 19:15:56 +09:00
Michael Stefaniuc 724fe43db6 dmime: DMMarkerTrack doesn't have IDirectMusicTrack8. 2015-07-02 19:15:54 +09:00
Michael Stefaniuc a2a2ea0311 dmime: Pass objects instead of ifaces to helpers. 2015-07-01 19:18:25 +09:00
Michael Stefaniuc 619c697da0 dmime: Move struct definitions to the files that need them. 2015-06-26 14:14:30 +09:00
Bruno Jesus f9a83377bc dmime: Don't fake success on IDirectMusicUtils_IPersistStream_ParseReference. 2015-06-16 16:51:01 +09:00
Michael Stefaniuc 39cc9da12a dmime/tests: Add IPersistStream tests for DM*Track. 2015-06-16 16:50:47 +09:00
Michael Stefaniuc 060d8a4638 dmime: Use the generic DMObject implementation for DMGraph. 2015-06-15 15:29:05 +09:00
Michael Stefaniuc 2c66b4b235 dmime: Get rid of the extra pointer to a DMUS_OBJECTDESC. 2015-06-15 15:29:05 +09:00
Michael Stefaniuc 93e61eb4e8 dmime: Use the generic DMObject implementation for DMAudioPathConfig. 2015-06-15 15:29:05 +09:00
Michael Stefaniuc 5ba420b635 dmime: Use the generic DirectMusicObject implementation for DMSegment. 2015-06-15 15:29:05 +09:00
Michael Stefaniuc 48ce352ea1 dmime: Remove unused arguments from helper functions. 2015-06-15 15:29:04 +09:00
Michael Stefaniuc 49dd9739dd dmime: Pass objects instead of ifaces to helpers. 2015-06-15 15:29:04 +09:00