gthread added for gtk-glade (may be used in near future)
gtk-glade : fixed bug where Quad was drawn to context 0 (no guard condition)
This commit is contained in:
parent
c0cb024969
commit
cc81b6a215
236
desmume/INSTALL
236
desmume/INSTALL
|
@ -0,0 +1,236 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script). Here is a another example:
|
||||
|
||||
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||
configuration-related scripts to be executed by `/bin/bash'.
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
|
@ -61,6 +61,14 @@ if test ! "x$HAVE_PKG" = "x" ; then
|
|||
AC_SUBST(GDKGLEXT_CFLAGS)
|
||||
AC_SUBST(GDKGLEXT_LIBS)
|
||||
|
||||
PKG_CHECK_MODULES(GTHREAD,
|
||||
"gthread-2.0",
|
||||
HAVE_GTHREAD=yes,
|
||||
HAVE_GTHREAD=no)
|
||||
AC_SUBST(GTHREAD_CFLAGS)
|
||||
AC_SUBST(GTHREAD_LIBS)
|
||||
|
||||
|
||||
AC_CHECK_LIB(gdkglext-x11-1.0, gdk_gl_init)
|
||||
|
||||
PKG_CHECK_MODULES(LIBGLADE,
|
||||
|
|
|
@ -16,8 +16,8 @@ desmume_glade_SOURCES = \
|
|||
gladedir = $(datadir)/desmume/glade
|
||||
glade_DATA = glade/DeSmuMe_Dtools.glade glade/DeSmuMe.glade glade/DeSmuME.xpm
|
||||
|
||||
desmume_glade_LDADD = ../libdesmume.a $(SDL_LIBS) $(GDKGLEXT_LIBS) $(LIBGLADE_LIBS)
|
||||
desmume_glade_CFLAGS = $(SDL_CFLAGS) $(GDKGLEXT_CFLAGS) $(LIBGLADE_CFLAGS) -DDATADIR=\"$(gladedir)/\"
|
||||
desmume_glade_LDADD = ../libdesmume.a $(SDL_LIBS) $(GDKGLEXT_LIBS) $(LIBGLADE_LIBS) $(GTHREAD_LIBS)
|
||||
desmume_glade_CFLAGS = $(SDL_CFLAGS) $(GDKGLEXT_CFLAGS) $(LIBGLADE_CFLAGS) $(GTHREAD_CFLAGS) -DDATADIR=\"$(gladedir)/\"
|
||||
desmume_glade_LDFLAGS = -rdynamic
|
||||
|
||||
EXTRA_DIST = DeSmuME.dev $(glade_DATA)
|
||||
|
|
|
@ -102,22 +102,17 @@ static void refresh() {
|
|||
u16 * pal;
|
||||
int tile_n, index;
|
||||
guint Textures;
|
||||
|
||||
|
||||
return;
|
||||
if (!init) return;
|
||||
|
||||
// this little thing doesnt display properly
|
||||
// quad gets drawn in the wrong place ?
|
||||
if (!my_gl_Begin(gl_context_num)) return;
|
||||
my_gl_Identity();
|
||||
// nothing drawn...
|
||||
|
||||
glClearColor(0.5,0.5,0.5,1.0);
|
||||
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
||||
if (!my_gl_Begin(gl_context_num)) return;
|
||||
my_gl_DrawBeautifulQuad();
|
||||
my_gl_End(gl_context_num);
|
||||
|
||||
return;
|
||||
|
||||
if (!my_gl_Begin(gl_context_num)) return;
|
||||
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glGenTextures(1, &Textures);
|
||||
|
@ -187,7 +182,6 @@ static void refresh() {
|
|||
static void initialize() {
|
||||
GtkComboBox * combo;
|
||||
if (init) return;
|
||||
init=TRUE;
|
||||
|
||||
wPaint= glade_xml_get_widget(xml_tools, "wDraw_Tile");
|
||||
wSpin = (GtkSpinButton*)glade_xml_get_widget(xml_tools, "wtools_4_palnum");
|
||||
|
@ -198,6 +192,7 @@ static void initialize() {
|
|||
|
||||
gl_context_num = init_GL_free(wPaint);
|
||||
gtk_widget_show(wPaint);
|
||||
init=TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -215,19 +210,19 @@ void on_wtools_4_palette_changed (GtkComboBox *combo, gpointer user_d
|
|||
palindex = gtk_combo_box_get_active(combo);
|
||||
gtk_widget_set_sensitive((GtkWidget*)wSpin,(palindex >=4));
|
||||
gtk_spin_button_set_value(wSpin,0);
|
||||
refresh();
|
||||
gtk_widget_queue_draw(wPaint);
|
||||
}
|
||||
void on_wtools_4_palnum_value_changed (GtkSpinButton *spin, gpointer user_data) {
|
||||
palnum = gtk_spin_button_get_value_as_int(spin);
|
||||
refresh();
|
||||
gtk_widget_queue_draw(wPaint);
|
||||
}
|
||||
void on_wtools_4_memory_changed (GtkComboBox *combo, gpointer user_data) {
|
||||
memnum = gtk_combo_box_get_active(combo);
|
||||
refresh();
|
||||
gtk_widget_queue_draw(wPaint);
|
||||
}
|
||||
void on_wtools_4_rXX_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
|
||||
colnum = dyn_CAST(int,user_data);
|
||||
refresh();
|
||||
gtk_widget_queue_draw(wPaint);
|
||||
}
|
||||
gboolean on_wDraw_Tile_expose_event (GtkWidget * w, GdkEventExpose * e, gpointer user_data) {
|
||||
refresh();
|
||||
|
|
|
@ -29,16 +29,36 @@
|
|||
|
||||
GLuint Textures[2];
|
||||
// free number we can use in tools 0-1 reserved for screens
|
||||
int free_gl_drawable=2;
|
||||
static int free_gl_drawable=2;
|
||||
GdkGLConfig *my_glConfig=NULL;
|
||||
GdkGLContext *my_glContext[8]={ _DUP8(NULL) };
|
||||
GdkGLDrawable *my_glDrawable[8]={ _DUP8(NULL) };
|
||||
GdkGLContext *my_glContext[8]={_DUP8(NULL)};
|
||||
GdkGLDrawable *my_glDrawable[8]={_DUP8(NULL)};
|
||||
GtkWidget *pDrawingTexArea;
|
||||
|
||||
#undef _DUP8
|
||||
#undef _DUP4
|
||||
#undef _DUP2
|
||||
|
||||
/************************************************/
|
||||
/* BEGIN & END */
|
||||
/************************************************/
|
||||
|
||||
BOOL my_gl_Begin (int screen) {
|
||||
return gdk_gl_drawable_gl_begin(my_glDrawable[screen], my_glContext[screen]);
|
||||
}
|
||||
|
||||
void my_gl_End (int screen) {
|
||||
if (gdk_gl_drawable_is_double_buffered (my_glDrawable[screen]))
|
||||
gdk_gl_drawable_swap_buffers (my_glDrawable[screen]);
|
||||
else
|
||||
glFlush();
|
||||
gdk_gl_drawable_gl_end(my_glDrawable[screen]);
|
||||
}
|
||||
|
||||
/************************************************/
|
||||
/* OTHER GL COMMANDS */
|
||||
/************************************************/
|
||||
|
||||
void my_gl_Identity() {
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
|
@ -64,18 +84,6 @@ void my_gl_DrawLogo() {
|
|||
}
|
||||
|
||||
|
||||
BOOL my_gl_Begin (int screen) {
|
||||
return gdk_gl_drawable_gl_begin(my_glDrawable[screen], my_glContext[screen]);
|
||||
}
|
||||
|
||||
void my_gl_End (int screen) {
|
||||
if (gdk_gl_drawable_is_double_buffered (my_glDrawable[screen]))
|
||||
gdk_gl_drawable_swap_buffers (my_glDrawable[screen]);
|
||||
else
|
||||
glFlush();
|
||||
gdk_gl_drawable_gl_end(my_glDrawable[screen]);
|
||||
}
|
||||
|
||||
void my_gl_Clear(int screen) {
|
||||
if (!my_gl_Begin(screen)) return;
|
||||
|
||||
|
@ -89,8 +97,17 @@ void my_gl_Clear(int screen) {
|
|||
my_gl_End(screen);
|
||||
}
|
||||
|
||||
/************************************************/
|
||||
/* INITIALIZATION */
|
||||
/************************************************/
|
||||
|
||||
void init_GL(GtkWidget * widget, int screen, int share_num) {
|
||||
int n;
|
||||
// for (n=gtk_events_pending(); n>0; n--)
|
||||
// gtk_main_iteration();
|
||||
// init GL capability
|
||||
my_glContext[screen]=NULL;
|
||||
my_glDrawable[screen]=NULL;
|
||||
if (!gtk_widget_set_gl_capability(
|
||||
widget, my_glConfig,
|
||||
my_glContext[share_num],
|
||||
|
@ -103,7 +120,8 @@ void init_GL(GtkWidget * widget, int screen, int share_num) {
|
|||
// realize so that we get a GdkWindow
|
||||
gtk_widget_realize(widget);
|
||||
// make sure we realize
|
||||
// while (gtk_events_pending()) gtk_main_iteration();
|
||||
gdk_flush();
|
||||
|
||||
my_glDrawable[screen] = gtk_widget_get_gl_drawable(widget);
|
||||
|
||||
if (screen == share_num) {
|
||||
|
@ -118,17 +136,20 @@ void init_GL(GtkWidget * widget, int screen, int share_num) {
|
|||
|
||||
int init_GL_free_s(GtkWidget * widget, int share_num) {
|
||||
int r = free_gl_drawable; free_gl_drawable++;
|
||||
my_glContext[r]=NULL;
|
||||
init_GL(widget, r, share_num);
|
||||
return r;
|
||||
}
|
||||
|
||||
int init_GL_free(GtkWidget * widget) {
|
||||
int r = free_gl_drawable; free_gl_drawable++;
|
||||
my_glContext[r]=NULL;
|
||||
init_GL(widget, r, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
void init_GL_capabilities() {
|
||||
void init_GL_capabilities() {
|
||||
|
||||
my_glConfig = gdk_gl_config_new_by_mode (
|
||||
GDK_GL_MODE_RGB
|
||||
| GDK_GL_MODE_DEPTH
|
||||
|
@ -149,6 +170,10 @@ void init_GL_capabilities() {
|
|||
my_gl_Clear(1);
|
||||
}
|
||||
|
||||
/************************************************/
|
||||
/* RESHAPE */
|
||||
/************************************************/
|
||||
|
||||
void reshape (GtkWidget * widget, int screen) {
|
||||
if (my_glDrawable[screen] == NULL ||
|
||||
!my_gl_Begin(screen)) return;
|
||||
|
@ -159,7 +184,11 @@ void reshape (GtkWidget * widget, int screen) {
|
|||
my_gl_End(screen);
|
||||
}
|
||||
|
||||
INLINE void my_gl_Texture2D() {
|
||||
/************************************************/
|
||||
/* TEXTURING */
|
||||
/************************************************/
|
||||
|
||||
void my_gl_Texture2D() {
|
||||
glBindTexture(GL_TEXTURE_2D, Textures[0]);
|
||||
#define MyFILTER GL_LINEAR
|
||||
//#define MyFILTER GL_NEAREST
|
||||
|
@ -168,7 +197,7 @@ INLINE void my_gl_Texture2D() {
|
|||
#undef MyFILTER
|
||||
}
|
||||
|
||||
INLINE void my_gl_ScreenTex() {
|
||||
void my_gl_ScreenTex() {
|
||||
// glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
|
||||
// pause effect
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
|
||||
|
@ -189,6 +218,10 @@ void my_gl_ScreenTexApply(int screen) {
|
|||
glEnd();
|
||||
}
|
||||
|
||||
/************************************************/
|
||||
/* RENDERING */
|
||||
/************************************************/
|
||||
|
||||
gboolean screen (GtkWidget * widget, int viewportscreen) {
|
||||
int H,W,screen;
|
||||
|
||||
|
|
|
@ -221,6 +221,7 @@ int main(int argc, char *argv[]) {
|
|||
const char *commandLine_File = NULL;
|
||||
gtk_init(&argc, &argv);
|
||||
#ifdef HAVE_LIBGDKGLEXT_X11_1_0
|
||||
g_thread_init(NULL);
|
||||
gtk_gl_init(&argc, &argv);
|
||||
register_gl_fun(my_gl_Begin,my_gl_End);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue