From 3cd06b40ebd5fcbe8db423f16b752656b6ca0966 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Sun, 9 Mar 2014 10:25:26 +0100 Subject: [PATCH] make audio work under windows --- gajim.nsi | 24 +++++++++++++++++++----- setup_win32.py | 5 +++++ src/common/gajim.py | 4 ++++ src/gajim.py | 6 ++++++ 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/gajim.nsi b/gajim.nsi index fa050c518..b694e1da6 100644 --- a/gajim.nsi +++ b/gajim.nsi @@ -164,22 +164,29 @@ Section "Gajim" SecGajim File "bin\atk.pyd" File "bin\bz2.pyd" File "bin\cairo._cairo.pyd" - File "bin\Crypto.Cipher.AES.pyd" - File "bin\Crypto.Hash.SHA256.pyd" + File "bin\Crypto.Cipher._AES.pyd" + File "bin\Crypto.Cipher._DES.pyd" + File "bin\Crypto.Cipher._DES3.pyd" + File "bin\Crypto.Hash._SHA256.pyd" File "bin\Crypto.Random.OSRNG.winrandom.pyd" File "bin\Crypto.Util._counter.pyd" File "bin\Crypto.Util.strxor.pyd" + File "bin\farstream.pyd" File "bin\gajim.exe" File "bin\gio._gio.pyd" File "bin\glib._glib.pyd" File "bin\gobject._gobject.pyd" File "bin\goocanvas.pyd" + File "bin\gst._gst.pyd" + File "bin\gst.interfaces.pyd" File "bin\gtk._gtk.pyd" File "bin\history_manager.exe" File "bin\OpenSSL.crypto.pyd" File "bin\libeay32.dll" File "bin\libgoocanvas-3.dll" File "bin\library.zip" + File "bin\libxml2mod.pyd" + File "bin\libxmlmods.libxml2mod.pyd" File "bin\pangocairo.pyd" File "bin\pango.pyd" File "bin\pycurl.pyd" @@ -544,20 +551,27 @@ Section "Uninstall" Delete "$INSTDIR\bin\atk.pyd" Delete "$INSTDIR\bin\bz2.pyd" Delete "$INSTDIR\bin\cairo._cairo.pyd" - Delete "$INSTDIR\bin\Crypto.Cipher.AES.pyd" - Delete "$INSTDIR\bin\Crypto.Hash.SHA256.pyd" + Delete "$INSTDIR\bin\Crypto.Cipher._AES.pyd" + Delete "$INSTDIR\bin\Crypto.Cipher._DES.pyd" + Delete "$INSTDIR\bin\Crypto.Cipher._DES3.pyd" + Delete "$INSTDIR\bin\Crypto.Hash._SHA256.pyd" Delete "$INSTDIR\bin\Crypto.Random.OSRNG.winrandom.pyd" Delete "$INSTDIR\bin\Crypto.Util._counter.pyd" - Delete "$INSTDIR\bin\gajim.exe" + Delete "$INSTDIR\bin\farstream.pyd" + Delete "$INSTDIR\bin\gajim.exe" Delete "$INSTDIR\bin\gio._gio.pyd" Delete "$INSTDIR\bin\glib._glib.pyd" Delete "$INSTDIR\bin\gobject._gobject.pyd" Delete "$INSTDIR\bin\goocanvas.pyd" + Delete "$INSTDIR\bin\gst._gst.pyd" + Delete "$INSTDIR\bin\gst.interfaces.pyd" Delete "$INSTDIR\bin\gtk._gtk.pyd" Delete "$INSTDIR\bin\history_manager.exe" Delete "$INSTDIR\bin\libeay32.dll" Delete "$INSTDIR\bin\libgoocanvas-3.dll" Delete "$INSTDIR\bin\library.zip" + Delete "$INSTDIR\bin\libxml2mod.pyd" + Delete "$INSTDIR\bin\libxmlmods.libxml2mod.pyd" Delete "$INSTDIR\bin\OpenSSL.crypto.pyd" Delete "$INSTDIR\bin\OpenSSL.rand.pyd" Delete "$INSTDIR\bin\OpenSSL.SSL.pyd" diff --git a/setup_win32.py b/setup_win32.py index 4a97aa1dd..71ffb0658 100644 --- a/setup_win32.py +++ b/setup_win32.py @@ -44,6 +44,11 @@ options = { 'libgtk-win32-2.0-0.dll', 'libpango-1.0-0.dll', 'libpangowin32-1.0-0.dll', 'libcairo-2.dll', 'libpangocairo-1.0-0.dll', 'libpangoft2-1.0-0.dll', + 'libfarstream-0.1-0.dll', 'libgcc_s_dw2-1.dll', + 'libgstbase-0.10-0.dll', 'libgstcontroller-0.10-0.dll', + 'libgstdataprotocol-0.10-0.dll', 'libgstinterfaces-0.10-0.dll', + 'libgstnet-0.10-0.dll', 'libgstreamer-0.10-0.dll', + 'libiconv-2.dll', 'libxml2.dll', 'libxml2-2.dll', ], } } diff --git a/src/common/gajim.py b/src/common/gajim.py index d9c2c5c3d..1a8a6b669 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -28,6 +28,7 @@ ## import sys +import os import logging import locale @@ -184,6 +185,9 @@ except Exception: HAVE_FARSTREAM = True try: + if os.name == 'nt' + os.environ['FS_PLUGIN_PATH'] = 'gtk\\lib\\farstream-0.1' + os.environ['GST_PLUGIN_PATH'] = 'gtk\\lib\\gstreamer-0.10' import gi gi.require_version('Farstream', '0.2') from gi.repository import Farstream diff --git a/src/gajim.py b/src/gajim.py index cb60495df..d268427e1 100644 --- a/src/gajim.py +++ b/src/gajim.py @@ -62,6 +62,12 @@ if os.name == 'nt': new_list.insert(0, os.path.join(os.getcwd(), 'gtk', 'bin')) os.environ['PATH'] = ';'.join(new_list) + # Needs to be imported very early to not crash Gajim on exit. + try: + __import__('libxml2mod') + except ImportError: + pass + try: import nbxmpp except ImportError: