Fix a few Linux things.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1816 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2009-09-13 06:13:22 +00:00
parent c1f8444fe1
commit f72c913c4b
13 changed files with 453 additions and 142 deletions

View File

@ -19,8 +19,6 @@
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --cflags`" />
<Add option="-DPCSX2_DEBUG" />
<Add option="-DPCSX2_DEVBUILD" />
<Add directory="../../include/Utilities" />
<Add directory="../../include" />
</Compiler>
</Target>
<Target title="Release">
@ -63,7 +61,19 @@
<Add option="-march=pentium4" />
<Add option="-march=i686" />
<Add option="-march=i586" />
<Add directory="../../include/Utilities" />
<Add directory="../../include" />
<Add directory="../../../3rdparty" />
</Compiler>
<Unit filename="../../../3rdparty/google/dense_hash_map" />
<Unit filename="../../../3rdparty/google/dense_hash_set" />
<Unit filename="../../../3rdparty/google/sparse_hash_map" />
<Unit filename="../../../3rdparty/google/sparse_hash_set" />
<Unit filename="../../../3rdparty/google/sparsehash/densehashtable.h" />
<Unit filename="../../../3rdparty/google/sparsehash/sparseconfig.h" />
<Unit filename="../../../3rdparty/google/sparsehash/sparsehashtable.h" />
<Unit filename="../../../3rdparty/google/sparsetable" />
<Unit filename="../../../3rdparty/google/type_traits.h" />
<Unit filename="../../include/Utilities/Console.h" />
<Unit filename="../../include/Utilities/Dependencies.h" />
<Unit filename="../../include/Utilities/Exceptions.h" />

View File

@ -1,12 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_workspace_file>
<Workspace title="pcsx2_suite_2008 workspace">
<Project filename="pcsx2/Linux/pcsx2.cbp" active="1">
<Depends filename="common/build/x86emitter/x86emitter.cbp" />
<Depends filename="common/build/Utilities/Utilities.cbp" />
<Depends filename="3rdparty/zlib/zlib.cbp" />
<Depends filename="tools/bin2cpp/bin2cpp.cbp" />
</Project>
<Project filename="pcsx2/Linux/pcsx2.cbp" />
<Project filename="common/build/x86emitter/x86emitter.cbp" />
<Project filename="common/build/Utilities/Utilities.cbp" />
<Project filename="3rdparty/SoundTouch/SoundTouch.cbp" />
@ -22,6 +17,6 @@
<Project filename="plugins/onepad/Linux/OnePad.cbp" />
<Project filename="plugins/zerogs/opengl/Linux/ZeroGS.cbp" />
<Project filename="tools/bin2cpp/bin2cpp.cbp" />
<Project filename="plugins/spu2-x/src/Linux/SPU2-X.cbp" />
<Project filename="plugins/spu2-x/src/Linux/SPU2-X.cbp" active="1" />
</Workspace>
</CodeBlocks_workspace_file>

View File

@ -16,6 +16,7 @@
#include "PrecompiledHeader.h"
#include "GS.h"
#include <list>
#ifdef PCSX2_DEVBUILD
void SaveGSState(const wxString& file)

View File

@ -1130,9 +1130,6 @@ void __forceinline finishmpeg2sliceIDEC(decoder_t* &decoder)
waitForSCD();
}
// This fixes Mana Khemia if uncommented, but needs testing.
// Breaks Figital Devil Saga.
//#define ALWAYS_RESUME_BEFORE_EXITING
void mpeg2sliceIDEC(void* pdone)
{
u32 read;

View File

@ -165,7 +165,7 @@
<Unit filename="../FiFo.cpp" />
<Unit filename="../GS.cpp" />
<Unit filename="../GS.h" />
<Unit filename="../GSstate.cpp" />
<Unit filename="../GSState.cpp" />
<Unit filename="../Gif.cpp" />
<Unit filename="../HostGui.h" />
<Unit filename="../Hw.cpp" />

View File

@ -22,9 +22,11 @@
#include <string>
using namespace std;
void SaveConf();
void LoadConf();
extern void SaveConf();
extern void LoadConf();
extern string s_strIniPath;
extern GtkWidget *MsgDlg;
exter void OnMsg_Ok();
#define is_checked(main_widget, widget_name) (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(main_widget, widget_name))))
#define set_checked(main_widget,widget_name, state) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(main_widget, widget_name)), state)

View File

@ -102,3 +102,7 @@ void configure()
{
ReadSettings();
}
void SysMessage(char const*, ...)
{
}

View File

@ -7,9 +7,9 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/SPU2-X" prefix_auto="1" extension_auto="1" />
<Option output="../../../../bin/plugins/SPU2-X.so" prefix_auto="0" extension_auto="0" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option type="3" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
@ -17,9 +17,9 @@
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/SPU2-X" prefix_auto="1" extension_auto="1" />
<Option output="../../../../bin/plugins/SPU2-X.so" prefix_auto="0" extension_auto="0" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option type="3" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
@ -35,17 +35,43 @@
<Add option="`pkg-config gtk+-2.0 --cflags`" />
<Add option="-fPIC" />
<Add option="-m32" />
<Add option="-liconv" />
<Add option="-msse2" />
<Add directory="../Linux" />
<Add directory="../../src" />
<Add directory="../3rdparty" />
<Add directory="../3rdparty/liba52" />
<Add directory="../../../../common/include" />
<Add directory="../../../../3rdparty/SoundTouch" />
<Add directory="../../../../3rdparty" />
</Compiler>
<Linker>
<Add option="`pkg-config gtk+-2.0 --libs`" />
<Add option="-shared" />
<Add library="asound" />
<Add library="stdc++" />
</Linker>
<Unit filename="../../../../3rdparty/SoundTouch/AAFilter.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/AAFilter.h" />
<Unit filename="../../../../3rdparty/SoundTouch/BPMDetect.h" />
<Unit filename="../../../../3rdparty/SoundTouch/FIFOSampleBuffer.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/FIFOSampleBuffer.h" />
<Unit filename="../../../../3rdparty/SoundTouch/FIFOSamplePipe.h" />
<Unit filename="../../../../3rdparty/SoundTouch/FIRFilter.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/FIRFilter.h" />
<Unit filename="../../../../3rdparty/SoundTouch/RateTransposer.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/RateTransposer.h" />
<Unit filename="../../../../3rdparty/SoundTouch/STTypes.h" />
<Unit filename="../../../../3rdparty/SoundTouch/SoundTouch.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/SoundTouch.h" />
<Unit filename="../../../../3rdparty/SoundTouch/TDStretch.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/TDStretch.h" />
<Unit filename="../../../../3rdparty/SoundTouch/WavFile.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/WavFile.h" />
<Unit filename="../../../../3rdparty/SoundTouch/cpu_detect.h" />
<Unit filename="../../../../3rdparty/SoundTouch/cpu_detect_x86_gcc.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/mmx_optimized.cpp" />
<Unit filename="../../../../3rdparty/SoundTouch/sse_optimized.cpp" />
<Unit filename="../3rdparty/liba52/a52.h" />
<Unit filename="../3rdparty/liba52/a52_internal.h" />
<Unit filename="../3rdparty/liba52/attributes.h" />
@ -89,7 +115,6 @@
<Unit filename="ConfigSoundTouch.cpp" />
<Unit filename="Dialogs.cpp" />
<Unit filename="Dialogs.h" />
<Unit filename="Linux.cpp" />
<Unit filename="Linux.h" />
<Unit filename="../Lowpass.cpp" />
<Unit filename="../Lowpass.h" />
@ -109,6 +134,7 @@
<Unit filename="../Timestretcher.cpp" />
<Unit filename="../Wavedump_wav.cpp" />
<Unit filename="../defs.h" />
<Unit filename="../iconvert.cpp" />
<Unit filename="../regs.h" />
<Unit filename="../spdif.h" />
<Unit filename="../utf8.cpp" />

View File

@ -67,7 +67,6 @@ void SetIrqCall()
has_to_call_irq=true;
}
#ifdef _MSC_VER
void SysMessage(const char *fmt, ...)
{
va_list list;
@ -80,9 +79,6 @@ void SysMessage(const char *fmt, ...)
swprintf_s(wtmp, L"%S", tmp);
MessageBox(0, wtmp, L"SPU2-X System Message", 0);
}
#else
extern void SysMessage(const char *fmt, ...);
#endif
__forceinline s16 * __fastcall GetMemPtr(u32 addr)
{

View File

@ -0,0 +1,261 @@
/*
* Copyright (C) 2001 Edmund Grimley Evans <edmundo@rano.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
*/
//#ifdef HAVE_ICONV
#include <assert.h>
#include <errno.h>
#include <iconv.h>
#include <stdlib.h>
#include <string.h>
/*
* Convert data from one encoding to another. Return:
*
* -2 : memory allocation failed
* -1 : unknown encoding
* 0 : data was converted exactly
* 1 : data was converted inexactly
* 2 : data was invalid (but still converted)
*
* We convert in two steps, via UTF-8, as this is the only
* reliable way of distinguishing between invalid input
* and valid input which iconv refuses to transliterate.
* We convert from UTF-8 twice, because we have no way of
* knowing whether the conversion was exact if iconv returns
* E2BIG (due to a bug in the specification of iconv).
* An alternative approach is to assume that the output of
* iconv is never more than 4 times as long as the input,
* but I prefer to avoid that assumption if possible.
*/
int iconvert(const char *fromcode, const char *tocode,
const char *from, size_t fromlen,
char **to, size_t *tolen)
{
int ret = 0;
iconv_t cd1, cd2;
char *ib;
char *ob;
char *utfbuf = 0, *outbuf, *newbuf;
size_t utflen, outlen, ibl, obl, k;
char tbuf[2048];
cd1 = iconv_open("UTF-8", fromcode);
if (cd1 == (iconv_t)(-1))
return -1;
cd2 = (iconv_t)(-1);
/* Don't use strcasecmp() as it's locale-dependent. */
if (!strchr("Uu", tocode[0]) ||
!strchr("Tt", tocode[1]) ||
!strchr("Ff", tocode[2]) ||
tocode[3] != '-' ||
tocode[4] != '8' ||
tocode[5] != '\0')
{
char *tocode1;
/*
* Try using this non-standard feature of glibc and libiconv.
* This is deliberately not a config option as people often
* change their iconv library without rebuilding applications.
*/
tocode1 = (char *)malloc(strlen(tocode) + 11);
if (!tocode1)
goto fail;
strcpy(tocode1, tocode);
strcat(tocode1, "//TRANSLIT");
cd2 = iconv_open(tocode1, "UTF-8");
free(tocode1);
if (cd2 == (iconv_t)(-1))
cd2 = iconv_open(tocode, fromcode);
if (cd2 == (iconv_t)(-1))
{
iconv_close(cd1);
return -1;
}
}
utflen = 1; /*fromlen * 2 + 1; XXX */
utfbuf = (char *)malloc(utflen);
if (!utfbuf)
goto fail;
/* Convert to UTF-8 */
ib = (char *)from;
ibl = fromlen;
ob = utfbuf;
obl = utflen;
for (;;)
{
k = iconv(cd1, &ib, &ibl, &ob, &obl);
assert((!k && !ibl) ||
(k == (size_t)(-1) && errno == E2BIG && ibl && obl < 6) ||
(k == (size_t)(-1) &&
(errno == EILSEQ || errno == EINVAL) && ibl));
if (!ibl)
break;
if (obl < 6)
{
/* Enlarge the buffer */
utflen *= 2;
newbuf = (char *)realloc(utfbuf, utflen);
if (!newbuf)
goto fail;
ob = (ob - utfbuf) + newbuf;
obl = utflen - (ob - newbuf);
utfbuf = newbuf;
}
else
{
/* Invalid input */
ib++, ibl--;
*ob++ = '#', obl--;
ret = 2;
iconv(cd1, 0, 0, 0, 0);
}
}
if (cd2 == (iconv_t)(-1))
{
/* The target encoding was UTF-8 */
if (tolen)
*tolen = ob - utfbuf;
if (!to)
{
free(utfbuf);
iconv_close(cd1);
return ret;
}
newbuf = (char *)realloc(utfbuf, (ob - utfbuf) + 1);
if (!newbuf)
goto fail;
ob = (ob - utfbuf) + newbuf;
*ob = '\0';
*to = newbuf;
iconv_close(cd1);
return ret;
}
/* Truncate the buffer to be tidy */
utflen = ob - utfbuf;
newbuf = (char *)realloc(utfbuf, utflen);
if (!newbuf)
goto fail;
utfbuf = newbuf;
/* Convert from UTF-8 to discover how long the output is */
outlen = 0;
ib = utfbuf;
ibl = utflen;
while (ibl)
{
ob = tbuf;
obl = sizeof(tbuf);
k = iconv(cd2, &ib, &ibl, &ob, &obl);
assert((k != (size_t)(-1) && !ibl) ||
(k == (size_t)(-1) && errno == E2BIG && ibl) ||
(k == (size_t)(-1) && errno == EILSEQ && ibl));
if (ibl && !(k == (size_t)(-1) && errno == E2BIG))
{
/* Replace one character */
char *tb = "?";
size_t tbl = 1;
outlen += ob - tbuf;
ob = tbuf;
obl = sizeof(tbuf);
k = iconv(cd2, &tb, &tbl, &ob, &obl);
assert((!k && !tbl) ||
(k == (size_t)(-1) && errno == EILSEQ && tbl));
for (++ib, --ibl; ibl && (*ib & 0x80); ib++, ibl--)
;
}
outlen += ob - tbuf;
}
ob = tbuf;
obl = sizeof(tbuf);
k = iconv(cd2, 0, 0, &ob, &obl);
assert(!k);
outlen += ob - tbuf;
/* Convert from UTF-8 for real */
outbuf = (char *)malloc(outlen + 1);
if (!outbuf)
goto fail;
ib = utfbuf;
ibl = utflen;
ob = outbuf;
obl = outlen;
while (ibl)
{
k = iconv(cd2, &ib, &ibl, &ob, &obl);
assert((k != (size_t)(-1) && !ibl) ||
(k == (size_t)(-1) && errno == EILSEQ && ibl));
if (k && !ret)
ret = 1;
if (ibl && !(k == (size_t)(-1) && errno == E2BIG))
{
/* Replace one character */
char *tb = "?";
size_t tbl = 1;
k = iconv(cd2, &tb, &tbl, &ob, &obl);
assert((!k && !tbl) ||
(k == (size_t)(-1) && errno == EILSEQ && tbl));
for (++ib, --ibl; ibl && (*ib & 0x80); ib++, ibl--)
;
}
}
k = iconv(cd2, 0, 0, &ob, &obl);
assert(!k);
assert(!obl);
*ob = '\0';
free(utfbuf);
iconv_close(cd1);
iconv_close(cd2);
if (tolen)
*tolen = outlen;
if (!to)
{
free(outbuf);
return ret;
}
*to = outbuf;
return ret;
fail:
free(utfbuf);
iconv_close(cd1);
if (cd2 != (iconv_t)(-1))
iconv_close(cd2);
return -2;
}
//#endif /* HAVE_ICONV */
/* arch-tag: e0ffb4f6-e337-4d5f-af90-d49e2b14041e
(do not change this comment) */

View File

@ -217,12 +217,11 @@ int utf8_decode(const char *from, char **to)
#else /* End win32. Rest is for real operating systems */
#ifdef HAVE_LANGINFO_CODESET
#include <langinfo.h>
#endif
int iconvert(const char *fromcode, const char *tocode,
extern int iconvert(const char *fromcode, const char *tocode,
const char *from, size_t fromlen,
char **to, size_t *tolen);
@ -251,17 +250,17 @@ static int convert_buffer(const char *fromcode, const char *tocode,
{
int ret = -1;
#ifdef HAVE_ICONV
//#ifdef HAVE_ICONV
ret = iconvert(fromcode, tocode, from, fromlen, to, tolen);
if (ret != -1)
return ret;
#endif
//#endif
#ifndef HAVE_ICONV /* should be ifdef USE_CHARSET_CONVERT */
ret = charset_convert(fromcode, tocode, from, fromlen, to, tolen);
if (ret != -1)
return ret;
#endif
//#ifndef HAVE_ICONV /* should be ifdef USE_CHARSET_CONVERT */
// ret = charset_convert(fromcode, tocode, from, fromlen, to, tolen);
// if (ret != -1)
// return ret;
//#endif
return ret;
}

View File

@ -9,7 +9,6 @@
<Target title="Debug">
<Option output="../../../bin/plugins/libZeroSPU2.so.0.1.0" prefix_auto="0" extension_auto="0" />
<Option object_output="obj/Debug/" />
<Option external_deps="../../../3rdparty/SoundTouch/libSoundTouch.a;" />
<Option type="3" />
<Option compiler="gcc" />
<Option createDefFile="1" />
@ -38,6 +37,7 @@
<Add option="`pkg-config gtk+-2.0 --cflags`" />
<Add option="-fPIC" />
<Add option="-m32" />
<Add option="-msse2" />
<Add option="-DVERSION=1" />
<Add directory="../Linux" />
<Add directory="../../zerospu2" />
@ -53,6 +53,27 @@
<Add library="stdc++" />
<Add library="dl" />
</Linker>
<Unit filename="../../../3rdparty/SoundTouch/AAFilter.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/AAFilter.h" />
<Unit filename="../../../3rdparty/SoundTouch/BPMDetect.h" />
<Unit filename="../../../3rdparty/SoundTouch/FIFOSampleBuffer.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/FIFOSampleBuffer.h" />
<Unit filename="../../../3rdparty/SoundTouch/FIFOSamplePipe.h" />
<Unit filename="../../../3rdparty/SoundTouch/FIRFilter.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/FIRFilter.h" />
<Unit filename="../../../3rdparty/SoundTouch/RateTransposer.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/RateTransposer.h" />
<Unit filename="../../../3rdparty/SoundTouch/STTypes.h" />
<Unit filename="../../../3rdparty/SoundTouch/SoundTouch.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/SoundTouch.h" />
<Unit filename="../../../3rdparty/SoundTouch/TDStretch.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/TDStretch.h" />
<Unit filename="../../../3rdparty/SoundTouch/WavFile.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/WavFile.h" />
<Unit filename="../../../3rdparty/SoundTouch/cpu_detect.h" />
<Unit filename="../../../3rdparty/SoundTouch/cpu_detect_x86_gcc.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/mmx_optimized.cpp" />
<Unit filename="../../../3rdparty/SoundTouch/sse_optimized.cpp" />
<Unit filename="Alsa.cpp" />
<Unit filename="Linux.cpp" />
<Unit filename="Linux.h" />
@ -66,7 +87,6 @@
<Option compilerVar="CC" />
</Unit>
<Unit filename="support.h" />
<Unit filename="zerospu2.glade" />
<Unit filename="../misc.h" />
<Unit filename="../reg.h" />
<Unit filename="../voices.cpp" />