Index: /smplayer/trunk/dxlist/README.txt
===================================================================
--- /smplayer/trunk/dxlist/README.txt	(revision 99)
+++ /smplayer/trunk/dxlist/README.txt	(revision 99)
@@ -0,0 +1,42 @@
+dxlist is a small console application for Windows which can list the
+directsound devices and directdraw display devices. This info is then used
+by smplayer.
+
+Usage: just run dxlist.exe with the -d or -s switches. -d shows the display
+devices, -s the sound devices.
+
+Compiling: in order to compile it you need the directx headers 
+(you can get a package here: http://www.videolan.org/vlc/dx7headers.tgz), and
+extract it in the directx folder. Then just compile it with the usual:
+
+qmake
+make
+
+Installation: dxlist.exe has to be installed on the same folder as smplayer.exe.
+
+Someone may be wondering... why don't you just simply call mplayer to get that 
+info instead of writing this program?
+
+Yes, mplayer can display that info, but there are several inconveniences:
+
+1) it's necessary to use the -v switch. That makes mplayer to be much more 
+verbose, that could even have an impact on performace (at least that was
+a problem with old versions of Qt)
+
+2) it's necessary to play a file. Yes, you can't get the info if you don't
+play a file. That's a problem, smplayer wouldn't be able to get the info until
+the user has at least played one file.
+
+3) even worse, to get the info about the attached displays, you have to
+use the -adapter option, but how can you know what value to use for 
+-adapter if you don't know yet the list of valid values?
+
+Because of those problems, I found easier to try to get that info using other
+ways. This program just outputs the required info, no need to play anything,
+smplayer can call it whenever it needs it.
+
+Finally, the reason to implement all this in a separate program and not inside
+smplayer itself (which would have been easier) is just simply to avoid it
+to depend on directx, and require everyone who want to compile it to install 
+the directx headers. After all this (dxlist) program is optional, smplayer 
+can work without it.
Index: /smplayer/trunk/dxlist/directx/README.txt
===================================================================
--- /smplayer/trunk/dxlist/directx/README.txt	(revision 99)
+++ /smplayer/trunk/dxlist/directx/README.txt	(revision 99)
@@ -0,0 +1,5 @@
+In order to compile dxlist you need the directx headers,
+you can get them from here: http://www.videolan.org/vlc/dx7headers.tgz
+
+Then extract them here (actually only dsound.h, ddraw.h and d3dtypes.h
+are necessary).
Index: /smplayer/trunk/dxlist/dxlist.pro
===================================================================
--- /smplayer/trunk/dxlist/dxlist.pro	(revision 99)
+++ /smplayer/trunk/dxlist/dxlist.pro	(revision 99)
@@ -0,0 +1,8 @@
+TEMPLATE	= app
+LANGUAGE	= C++
+QT = 
+CONFIG += console release
+INCLUDEPATH += directx
+LIBS += -ldsound -lddraw
+
+SOURCES = main.cpp
Index: /smplayer/trunk/dxlist/main.cpp
===================================================================
--- /smplayer/trunk/dxlist/main.cpp	(revision 99)
+++ /smplayer/trunk/dxlist/main.cpp	(revision 99)
@@ -0,0 +1,75 @@
+/*  smplayer, GUI front-end for mplayer.
+    Copyright (C) 2006-2008 Ricardo Villalba <rvm@escomposlinux.org>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#define DIRECTSOUND_VERSION 5
+#include <stdio.h>
+#include <dsound.h>
+#include <ddraw.h>
+
+int sound_devices;
+int display_devices;
+
+BOOL CALLBACK DirectSoundEnum(LPGUID guid, LPCSTR desc, LPCSTR module, LPVOID context)
+{		
+	printf("%i: %s\n", sound_devices, desc);
+	
+	sound_devices++;
+	
+	return TRUE;
+}
+
+BOOL WINAPI DirectDrawEnum(GUID FAR *lpGUID, LPSTR lpDriverDescription, LPSTR lpDriverName, LPVOID lpContext, HMONITOR  hm)
+{
+	if (!lpGUID) 
+		printf("%i: %s\n", display_devices, "Primary Display Adapter");
+	else
+		printf("%i: %s\n", display_devices, lpDriverDescription);
+
+	display_devices++;
+	
+	return TRUE;
+}
+
+int main(int argc, char* argv[])
+{
+	if (argc != 2){
+		printf("Usage: dxlist.exe [-sound] [-s] [-display] [-d]\n");
+		return 1;
+	}
+
+	if ((strcmp(argv[1],"-sound")==0) || (strcmp(argv[1],"-s")==0)) {
+		sound_devices = 0;
+		printf("Sound devices:\n");
+		if (DirectSoundEnumerateA(DirectSoundEnum, NULL) != DS_OK){
+			printf("Error: can't list the audio devices\n");
+		}
+	}
+	else
+	if ((strcmp(argv[1],"-display")==0) || (strcmp(argv[1],"-d")==0)) {	
+		display_devices = 0;
+		printf("Display devices:\n");
+		if (DirectDrawEnumerateExA(DirectDrawEnum, NULL, DDENUM_ATTACHEDSECONDARYDEVICES) != DS_OK) {
+			printf("Error: can't list the display devices\n");
+		}
+	}
+	else
+	printf("Unknown option %s\n", argv[1]);
+
+	return 0;
+}
+
