You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
(27) |
Apr
(11) |
May
(112) |
Jun
(8) |
Jul
(10) |
Aug
(68) |
Sep
(12) |
Oct
(3) |
Nov
(19) |
Dec
(3) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(15) |
Mar
(20) |
Apr
(22) |
May
(131) |
Jun
(27) |
Jul
(19) |
Aug
(207) |
Sep
(61) |
Oct
(27) |
Nov
(28) |
Dec
(21) |
| 2004 |
Jan
(7) |
Feb
(25) |
Mar
(14) |
Apr
(55) |
May
(15) |
Jun
(2) |
Jul
(14) |
Aug
(28) |
Sep
(29) |
Oct
|
Nov
|
Dec
|
|
From: Brenda L. <asp...@us...> - 2003-05-14 00:33:26
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/MIDIPlugin In directory sc8-pr-cvs1:/tmp/cvs-serv8642 Modified Files: sqUnixMIDI.c Log Message: Ian Piumarta's release 3.5-1devel Index: sqUnixMIDI.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/plugins/MIDIPlugin/sqUnixMIDI.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** sqUnixMIDI.c 12 May 2003 07:26:26 -0000 1.1 --- sqUnixMIDI.c 14 May 2003 00:33:15 -0000 1.2 *************** *** 5,8 **** --- 5,12 ---- * All rights reserved. * + * You are NOT ALLOWED to distribute modified versions of this file + * under its original name. If you want to modify it and then make + * your modifications available publicly, rename the file first. + * * This file is part of Unix Squeak. * *************** *** 13,17 **** * You may use and/or distribute this file ONLY as part of Squeak, under * the terms of the Squeak License as described in `LICENSE' in the base of ! * this distribution, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not --- 17,21 ---- * You may use and/or distribute this file ONLY as part of Squeak, under * the terms of the Squeak License as described in `LICENSE' in the base of ! * this distribution, subject to the following additional restrictions: * * 1. The origin of this software must not be misrepresented; you must not *************** *** 21,33 **** * would be appreciated but is not required. * ! * 2. This notice must not be removed or altered in any source distribution. * * Using (or modifying this file for use) in any context other than Squeak * changes these copyright conditions. Read the file `COPYING' in the * directory `platforms/unix/doc' before proceeding with any such use. - * - * You are not allowed to distribute a modified version of this file - * under its original name without explicit permission to do so. If - * you change it, rename it. */ --- 25,36 ---- * would be appreciated but is not required. * ! * 2. You must not distribute (or make publicly available by any ! * means) a modified copy of this file unless you first rename it. ! * ! * 3. This notice must not be removed or altered in any source distribution. * * Using (or modifying this file for use) in any context other than Squeak * changes these copyright conditions. Read the file `COPYING' in the * directory `platforms/unix/doc' before proceeding with any such use. */ |
|
From: Brenda L. <asp...@us...> - 2003-05-14 00:31:17
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/JoystickTabletPlugin In directory sc8-pr-cvs1:/tmp/cvs-serv7886 Modified Files: sqUnixJoystickTablet.c Log Message: Ian Piumarta's release 3.5-1devel Index: sqUnixJoystickTablet.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/plugins/JoystickTabletPlugin/sqUnixJoystickTablet.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sqUnixJoystickTablet.c 12 May 2003 07:26:26 -0000 1.3 --- sqUnixJoystickTablet.c 14 May 2003 00:31:14 -0000 1.4 *************** *** 5,8 **** --- 5,12 ---- * All rights reserved. * + * You are NOT ALLOWED to distribute modified versions of this file + * under its original name. If you want to modify it and then make + * your modifications available publicly, rename the file first. + * * This file is part of Unix Squeak. * *************** *** 13,17 **** * You may use and/or distribute this file ONLY as part of Squeak, under * the terms of the Squeak License as described in `LICENSE' in the base of ! * this distribution, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not --- 17,21 ---- * You may use and/or distribute this file ONLY as part of Squeak, under * the terms of the Squeak License as described in `LICENSE' in the base of ! * this distribution, subject to the following additional restrictions: * * 1. The origin of this software must not be misrepresented; you must not *************** *** 21,33 **** * would be appreciated but is not required. * ! * 2. This notice must not be removed or altered in any source distribution. * * Using (or modifying this file for use) in any context other than Squeak * changes these copyright conditions. Read the file `COPYING' in the * directory `platforms/unix/doc' before proceeding with any such use. - * - * You are not allowed to distribute a modified version of this file - * under its original name without explicit permission to do so. If - * you change it, rename it. */ --- 25,36 ---- * would be appreciated but is not required. * ! * 2. You must not distribute (or make publicly available by any ! * means) a modified copy of this file unless you first rename it. ! * ! * 3. This notice must not be removed or altered in any source distribution. * * Using (or modifying this file for use) in any context other than Squeak * changes these copyright conditions. Read the file `COPYING' in the * directory `platforms/unix/doc' before proceeding with any such use. */ |
|
From: Brenda L. <asp...@us...> - 2003-05-14 00:28:31
|
Update of /cvsroot/squeak/squeak/platforms/unix/plugins/AsynchFilePlugin In directory sc8-pr-cvs1:/tmp/cvs-serv6696 Modified Files: sqUnixAsynchFile.c Log Message: Ian Piumarta's release 3.5-1devel Index: sqUnixAsynchFile.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** sqUnixAsynchFile.c 12 May 2003 07:26:17 -0000 1.1 --- sqUnixAsynchFile.c 14 May 2003 00:28:28 -0000 1.2 *************** *** 5,8 **** --- 5,12 ---- * All rights reserved. * + * You are NOT ALLOWED to distribute modified versions of this file + * under its original name. If you want to modify it and then make + * your modifications available publicly, rename the file first. + * * This file is part of Unix Squeak. * *************** *** 13,17 **** * You may use and/or distribute this file ONLY as part of Squeak, under * the terms of the Squeak License as described in `LICENSE' in the base of ! * this distribution, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not --- 17,21 ---- * You may use and/or distribute this file ONLY as part of Squeak, under * the terms of the Squeak License as described in `LICENSE' in the base of ! * this distribution, subject to the following additional restrictions: * * 1. The origin of this software must not be misrepresented; you must not *************** *** 21,33 **** * would be appreciated but is not required. * ! * 2. This notice must not be removed or altered in any source distribution. * * Using (or modifying this file for use) in any context other than Squeak * changes these copyright conditions. Read the file `COPYING' in the * directory `platforms/unix/doc' before proceeding with any such use. - * - * You are not allowed to distribute a modified version of this file - * under its original name without explicit permission to do so. If - * you change it, rename it. * * Author: Ian...@IN... --- 25,36 ---- * would be appreciated but is not required. * ! * 2. You must not distribute (or make publicly available by any ! * means) a modified copy of this file unless you first rename it. ! * ! * 3. This notice must not be removed or altered in any source distribution. * * Using (or modifying this file for use) in any context other than Squeak * changes these copyright conditions. Read the file `COPYING' in the * directory `platforms/unix/doc' before proceeding with any such use. * * Author: Ian...@IN... |
|
From: Brenda L. <asp...@us...> - 2003-05-14 00:25:50
|
Update of /cvsroot/squeak/squeak/platforms/unix/doc
In directory sc8-pr-cvs1:/tmp/cvs-serv5761
Modified Files:
COPYING
Log Message:
Ian Piumarta's release 3.5-1devel
Index: COPYING
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/unix/doc/COPYING,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** COPYING 12 May 2003 07:26:15 -0000 1.1
--- COPYING 14 May 2003 00:25:47 -0000 1.2
***************
*** 6,9 ****
--- 6,13 ----
All rights reserved.
+ You are NOT ALLOWED to distribute modified versions of this file
+ under its original name. If you want to modify it and then make
+ your modifications available publicly, rename the file first.
+
This file is part of Unix Squeak.
***************
*** 14,18 ****
You may use and/or distribute this file ONLY as part of Squeak, under
the terms of the Squeak License as described in `LICENSE' in the base of
! this distribution, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
--- 18,22 ----
You may use and/or distribute this file ONLY as part of Squeak, under
the terms of the Squeak License as described in `LICENSE' in the base of
! this distribution, subject to the following additional restrictions:
1. The origin of this software must not be misrepresented; you must not
***************
*** 22,34 ****
would be appreciated but is not required.
! 2. This notice must not be removed or altered in any source distribution.
Using (or modifying this file for use) in any context other than Squeak
changes these copyright conditions. Read the file `COPYING' in the
directory `platforms/unix/doc' before proceeding with any such use.
-
- You are not allowed to distribute a modified version of this file
- under its original name without explicit permission to do so. If
- you change it, rename it.
NOTE: Files that do not contain the above notice are subject to the
--- 26,37 ----
would be appreciated but is not required.
! 2. You must not distribute (or make publicly available by any
! means) a modified copy of this file unless you first rename it.
!
! 3. This notice must not be removed or altered in any source distribution.
Using (or modifying this file for use) in any context other than Squeak
changes these copyright conditions. Read the file `COPYING' in the
directory `platforms/unix/doc' before proceeding with any such use.
NOTE: Files that do not contain the above notice are subject to the
|
|
From: Brenda L. <asp...@us...> - 2003-05-14 00:21:11
|
Update of /cvsroot/squeak/squeak/platforms/unix/config In directory sc8-pr-cvs1:/tmp/cvs-serv4169 Modified Files: Makefile.plg.in inisqueak.in mkinstalldirs relpath Log Message: Ian Piumarta's release 3.5-1devel Index: Makefile.plg.in =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/config/Makefile.plg.in,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Makefile.plg.in 12 May 2003 07:26:14 -0000 1.1 --- Makefile.plg.in 14 May 2003 00:21:07 -0000 1.2 *************** *** 5,8 **** --- 5,12 ---- # All rights reserved. # + # You are NOT ALLOWED to distribute modified versions of this file + # under its original name. If you want to modify it and then make + # your modifications available publicly, rename the file first. + # # This file is part of Unix Squeak. # *************** *** 13,17 **** # You may use and/or distribute this file ONLY as part of Squeak, under # the terms of the Squeak License as described in `LICENSE' in the base of ! # this distribution, subject to the following restrictions: # # 1. The origin of this software must not be misrepresented; you must not --- 17,21 ---- # You may use and/or distribute this file ONLY as part of Squeak, under # the terms of the Squeak License as described in `LICENSE' in the base of ! # this distribution, subject to the following additional restrictions: # # 1. The origin of this software must not be misrepresented; you must not *************** *** 21,33 **** # would be appreciated but is not required. # ! # 2. This notice must not be removed or altered in any source distribution. # # Using (or modifying this file for use) in any context other than Squeak # changes these copyright conditions. Read the file `COPYING' in the # directory `platforms/unix/doc' before proceeding with any such use. - # - # You are not allowed to distribute a modified version of this file - # under its original name without explicit permission to do so. If - # you change it, rename it. # # Author: ian...@in... --- 25,36 ---- # would be appreciated but is not required. # ! # 2. You must not distribute (or make publicly available by any ! # means) a modified copy of this file unless you first rename it. ! # ! # 3. This notice must not be removed or altered in any source distribution. # # Using (or modifying this file for use) in any context other than Squeak # changes these copyright conditions. Read the file `COPYING' in the # directory `platforms/unix/doc' before proceeding with any such use. # # Author: ian...@in... Index: inisqueak.in =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/config/inisqueak.in,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** inisqueak.in 12 May 2003 07:26:14 -0000 1.1 --- inisqueak.in 14 May 2003 00:21:07 -0000 1.2 *************** *** 7,10 **** --- 7,14 ---- # All rights reserved. # + # You are NOT ALLOWED to distribute modified versions of this file + # under its original name. If you want to modify it and then make + # your modifications available publicly, rename the file first. + # # This file is part of Unix Squeak. # *************** *** 15,19 **** # You may use and/or distribute this file ONLY as part of Squeak, under # the terms of the Squeak License as described in `LICENSE' in the base of ! # this distribution, subject to the following restrictions: # # 1. The origin of this software must not be misrepresented; you must not --- 19,23 ---- # You may use and/or distribute this file ONLY as part of Squeak, under # the terms of the Squeak License as described in `LICENSE' in the base of ! # this distribution, subject to the following additional restrictions: # # 1. The origin of this software must not be misrepresented; you must not *************** *** 23,35 **** # would be appreciated but is not required. # ! # 2. This notice must not be removed or altered in any source distribution. # # Using (or modifying this file for use) in any context other than Squeak # changes these copyright conditions. Read the file `COPYING' in the # directory `platforms/unix/doc' before proceeding with any such use. - # - # You are not allowed to distribute a modified version of this file - # under its original name without explicit permission to do so. If - # you change it, rename it. # # Author: Ian...@IN... --- 27,38 ---- # would be appreciated but is not required. # ! # 2. You must not distribute (or make publicly available by any ! # means) a modified copy of this file unless you first rename it. ! # ! # 3. This notice must not be removed or altered in any source distribution. # # Using (or modifying this file for use) in any context other than Squeak # changes these copyright conditions. Read the file `COPYING' in the # directory `platforms/unix/doc' before proceeding with any such use. # # Author: Ian...@IN... Index: mkinstalldirs =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/config/mkinstalldirs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Index: relpath =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/unix/config/relpath,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** relpath 12 May 2003 07:26:14 -0000 1.1 --- relpath 14 May 2003 00:21:08 -0000 1.2 *************** *** 7,10 **** --- 7,14 ---- # All rights reserved. # + # You are NOT ALLOWED to distribute modified versions of this file + # under its original name. If you want to modify it and then make + # your modifications available publicly, rename the file first. + # # This file is part of Unix Squeak. # *************** *** 15,19 **** # You may use and/or distribute this file ONLY as part of Squeak, under # the terms of the Squeak License as described in `LICENSE' in the base of ! # this distribution, subject to the following restrictions: # # 1. The origin of this software must not be misrepresented; you must not --- 19,23 ---- # You may use and/or distribute this file ONLY as part of Squeak, under # the terms of the Squeak License as described in `LICENSE' in the base of ! # this distribution, subject to the following additional restrictions: # # 1. The origin of this software must not be misrepresented; you must not *************** *** 23,35 **** # would be appreciated but is not required. # ! # 2. This notice must not be removed or altered in any source distribution. # # Using (or modifying this file for use) in any context other than Squeak # changes these copyright conditions. Read the file `COPYING' in the # directory `platforms/unix/doc' before proceeding with any such use. - # - # You are not allowed to distribute a modified version of this file - # under its original name without explicit permission to do so. If - # you change it, rename it. # # Author: Ian...@IN... --- 27,38 ---- # would be appreciated but is not required. # ! # 2. You must not distribute (or make publicly available by any ! # means) a modified copy of this file unless you first rename it. ! # ! # 3. This notice must not be removed or altered in any source distribution. # # Using (or modifying this file for use) in any context other than Squeak # changes these copyright conditions. Read the file `COPYING' in the # directory `platforms/unix/doc' before proceeding with any such use. # # Author: Ian...@IN... |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:48:57
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-Sun
In directory sc8-pr-cvs1:/tmp/cvs-serv30463/vm-sound-Sun
Added Files:
acinclude.m4 sqUnixSoundSun.c
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: acinclude.m4 ---
# -*- sh -*-
AC_MSG_CHECKING([for SunOS/Solaris audio])
AC_TRY_COMPILE([#include <sys/audioio.h>],[AUDIO_SUNVTS;],[
AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED(HAVE_SYS_AUDIOIO_H,1)
],[
AC_TRY_COMPILE([#include <sun/audioio.h>],[AUDIO_SUNVTS;],[
AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED(HAVE_SUN_AUDIOIO_H,1)
],[
AC_MSG_RESULT(no)
AC_PLUGIN_DISABLE
])
])
--- NEW FILE: sqUnixSoundSun.c ---
/* sqUnixSoundSun.c -- sound support for SunOS and Solaris
*
* Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
* as listed elsewhere in this file.
* All rights reserved.
*
* You are NOT ALLOWED to distribute modified versions of this file
* under its original name. If you want to modify it and then make
* your modifications available publicly, rename the file first.
*
* This file is part of Unix Squeak.
*
* This file 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.
*
* You may use and/or distribute this file ONLY as part of Squeak, under
* the terms of the Squeak License as described in `LICENSE' in the base of
* this distribution, subject to the following additional restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment to the original author(s) (and any
* other contributors mentioned herein) in the product documentation
* would be appreciated but is not required.
*
* 2. You must not distribute (or make publicly available by any
* means) a modified copy of this file unless you first rename it.
*
* 3. This notice must not be removed or altered in any source distribution.
*
* Using (or modifying this file for use) in any context other than Squeak
* changes these copyright conditions. Read the file `COPYING' in the
* directory `platforms/unix/doc' before proceeding with any such use.
*
* Authors: Ian...@in... and Lex Spoon <le...@cc...>
*
* This support is rudimentary and is implemented largely by reading
* header files and guessing what to do.
*/
#include "sq.h"
#undef DEBUG
#include "aio.h"
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#ifdef HAVE_SYS_AUDIOIO_H
# include <sys/audioio.h>
#else
# include <sun/audioio.h>
#endif
#include <errno.h>
#ifdef DEBUG
# define PRINTF(ARGS) printf ARGS
# define TRACE 1
#elsen
# define PRINTF(ARGS)
#endif
static int sound_Stop(void);
static int auFd= -1; /* open on /dev/dsp */
static int fmtStereo= 0; /* whether we are playing in stereo or not */
static int auPlaySemaIndex= 0; /* an index to signal when new data may be played */
static int auBufBytes= 0; /* buffer size to use for playback.
unfortunately, this bears no relationship to
whatever the kernel and soundcard are using */
static int auBuffersPlayed= 0;
static void auHandle(int fd, void *data, int flags)
{
if (auFd < 0) return;
if (sound_AvailableSpace() > 0)
signalSemaphoreWithIndex(auPlaySemaIndex);
aioHandle(fd, auHandle, flags);
}
/*** exported sound output functions ***/
static int sound_Stop(void)
{
if (auFd == -1) return;
aioDisable(auFd);
close(auFd);
auFd= -1;
return 0;
}
static int sound_Start(int frameCount, int samplesPerSec, int stereo, int semaIndex)
{
int bytesPerFrame= (stereo ? 4 : 2);
int bufferBytes= ((frameCount * bytesPerFrame) / 8) * 8;
struct audio_info info;
int err;
if (auFd != -1) sound_Stop();
auPlaySemaIndex= semaIndex;
fmtStereo= stereo;
auBufBytes= bytesPerFrame * frameCount;
if ((auFd= open("/dev/audio", O_WRONLY)) == -1)
{
perror("/dev/audio");
return false;
}
/* set up device */
if (ioctl(auFd, AUDIO_GETINFO, &info))
{
perror("AUDIO_GETINFO");
goto closeAndFail;
}
info.play.gain= 100;
info.play.precision= 16;
info.play.encoding= AUDIO_ENCODING_LINEAR;
info.play.channels= fmtStereo ? 2 : 1;
info.play.sample_rate= samplesPerSec;
auBuffersPlayed= info.play.eof;
while ((err= ioctl(auFd, AUDIO_SETINFO, &info)) && errno == EINTR)
;
if (err)
{
perror("AUDIO_SETINFO");
goto closeAndFail;
}
aioEnable(auFd, 0, 0);
aioHandle(auFd, auHandle, AIO_RX);
return true;
closeAndFail:
close(auFd);
auFd= -1;
return false;
}
static int sound_AvailableSpace(void)
{
struct audio_info info;
if (auFd < 0) return 0;
if (ioctl(auFd, AUDIO_GETINFO, &info))
{
perror("AUDIO_GETINFO");
sound_Stop();
}
return (auBufBytes * (info.play.eof - auBuffersPlayed + 2));
}
static int sound_PlaySamplesFromAtLength(int frameCount, int arrayIndex, int startIndex)
{
short *src= (short *) (arrayIndex + 4*startIndex);
short buf[2*frameCount];
int i;
int bytes;
if (auFd < 0) return -1;
if (fmtStereo)
{
bytes= 4 * frameCount;
for (i= 0; i < 2 * frameCount; i++)
buf[i]= src[i];
}
else
{
bytes= 2 * frameCount;
for (i= 0; i < frameCount; i++)
buf[i]= src[2*i];
}
/* write data to device from auBuf to dst */
while (bytes > 0)
{
int len;
char *pos= (char *) buf;
len= write(auFd, pos, bytes);
if (len < 0)
{
perror("/dev/audio");
return 0;
}
bytes -= len;
pos += len;
}
/* add an eof marker */
write(auFd, buf, 0);
auBuffersPlayed += 1;
return frameCount;
}
static int sound_InsertSamplesFromLeadTime(int frameCount, int srcBufPtr,
int samplesOfLeadTime)
{
return 0;
}
static int sound_PlaySilence(void)
{
return 0;
}
/** recording not supported **/
static int sound_SetRecordLevel(int level)
{
success(false);
return;
}
static int sound_StartRecording(int desiredSamplesPerSec, int stereo, int semaIndex)
{
success(false);
return;
}
static int sound_StopRecording(void)
{
return;
}
static double sound_GetRecordingSampleRate(void)
{
success(false);
return 0.0;
}
static int sound_RecordSamplesIntoAtLength(int buf, int startSliceIndex, int bufferSizeInBytes)
{
success(false);
return 0;
}
static void sound_Volume(double *left, double *right)
{
success(false);
return;
}
static void sound_SetVolume(double left, double right)
{
success(false);
return;
}
#include "SqSound.h"
SqSoundDefine(Sun);
#include "SqModule.h"
static void sound_parseEnvironment(void) {}
static int sound_parseArgument(int argc, char **argv) { return 0; }
static void sound_printUsage(void) {}
static void sound_printUsageNotes(void) {}
static void *sound_makeInterface(void) { return &sound_Sun_itf; }
SqModuleDefine(sound, Sun);
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:48:57
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-null In directory sc8-pr-cvs1:/tmp/cvs-serv30463/vm-sound-null Added Files: sqUnixSoundNull.c Log Message: Ian Piumarta's release 3.5-1devel --- NEW FILE: sqUnixSoundNull.c --- /* sqUnixSoundNull.c -- sound module for no sound * * Author: Ian...@in... * * Last edited: 2003-02-09 17:53:08 by piumarta on emilia.inria.fr * * Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors * as listed elsewhere in this file. * All rights reserved. * * You are NOT ALLOWED to distribute modified versions of this file * under its original name. If you want to modify it and then make * your modifications available publicly, rename the file first. * * This file is part of Unix Squeak. * * This file 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. * * You may use and/or distribute this file ONLY as part of Squeak, under * the terms of the Squeak License as described in `LICENSE' in the base of * this distribution, subject to the following additional restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment to the original author(s) (and any * other contributors mentioned herein) in the product documentation * would be appreciated but is not required. * * 2. You must not distribute (or make publicly available by any * means) a modified copy of this file unless you first rename it. * * 3. This notice must not be removed or altered in any source distribution. * * Using (or modifying this file for use) in any context other than Squeak * changes these copyright conditions. Read the file `COPYING' in the * directory `platforms/unix/doc' before proceeding with any such use. */ #include "sq.h" #define FAIL(X) { success(false); return X; } /* output */ static int sound_AvailableSpace(void) FAIL(8192) static int sound_InsertSamplesFromLeadTime(int frameCount, int srcBufPtr, int samplesOfLeadTime) FAIL(frameCount) static int sound_PlaySamplesFromAtLength(int frameCount, int arrayIndex, int startIndex) FAIL(8192) static int sound_PlaySilence(void) FAIL(8192) static int sound_Start(int frameCount, int samplesPerSec, int stereo, int semaIndex) FAIL(1) static int sound_Stop(void) FAIL(0) /* input */ static int sound_StartRecording(int desiredSamplesPerSec, int stereo, int semaIndex) FAIL(0) static int sound_StopRecording(void) FAIL(0) static double sound_GetRecordingSampleRate(void) FAIL(0) static int sound_RecordSamplesIntoAtLength(int buf, int startSliceIndex, int bufferSizeInBytes) FAIL(0) /* mixer */ static void sound_Volume(double *left, double *right) { return; } static void sound_SetVolume(double left, double right) { return; } static int sound_SetRecordLevel(int level) { return level; } #include "SqSound.h" SqSoundDefine(null); #include "SqModule.h" static void sound_parseEnvironment(void) {} static int sound_parseArgument(int argc, char **argv) { if (!strcmp(argv[0], "-nosound")) return 1; return 0; } static void sound_printUsage(void) {} static void sound_printUsageNotes(void) {} static void *sound_makeInterface(void) { return &sound_null_itf; } SqModuleDefine(sound, null); |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:48:57
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-OSS In directory sc8-pr-cvs1:/tmp/cvs-serv30463/vm-sound-OSS Added Files: acinclude.m4 sqUnixSoundOSS.c Log Message: Ian Piumarta's release 3.5-1devel --- NEW FILE: acinclude.m4 --- # -*- sh -*- AC_MSG_CHECKING([for Open Sound System]) AC_TRY_COMPILE([#include <sys/soundcard.h>],[OPEN_SOUND_SYSTEM;],[ AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) AC_PLUGIN_DISABLE ]) --- NEW FILE: sqUnixSoundOSS.c --- /* sqUnixSoundOSS.c -- sound module for Open Sound System * * Author: Ian...@in... * * Last edited: 2003-02-10 18:34:32 by piumarta on emilia.inria.fr * * Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors * as listed elsewhere in this file. * All rights reserved. * * You are NOT ALLOWED to distribute modified versions of this file * under its original name. If you want to modify it and then make * your modifications available publicly, rename the file first. * * This file is part of Unix Squeak. * * This file 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. [...1148 lines suppressed...] if (!strcmp(argv[0], "-nomixer")) return noSoundMixer= 1; return 0; } static void sound_printUsage(void) { printf("\nOSS <option>s:\n"); printf(" -nomixer disable mixer (volume) controls\n"); } static void sound_printUsageNotes(void) { } static void *sound_makeInterface(void) { return &sound_OSS_itf; } SqModuleDefine(sound, OSS); |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:48:57
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-NAS
In directory sc8-pr-cvs1:/tmp/cvs-serv30463/vm-sound-NAS
Added Files:
acinclude.m4 sqUnixSoundNAS.c
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: acinclude.m4 ---
# -*- sh -*-
AC_MSG_CHECKING([for Network Audio System])
AC_TRY_COMPILE([#include <audio/audio.h>],[AuElementNotifyKindLowWater;],[
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
AC_PLUGIN_DISABLE
])
--- NEW FILE: sqUnixSoundNAS.c ---
/* sqUnixSoundNAS.c -- sound support for the Network Audio System
*
* Author: Lex Spoon <le...@cc...>
*
* Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
* as listed elsewhere in this file.
* All rights reserved.
*
* You are NOT ALLOWED to distribute modified versions of this file
* under its original name. If you want to modify it and then make
* your modifications available publicly, rename the file first.
*
* This file is part of Unix Squeak.
*
* This file 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.
*
* You may use and/or distribute this file ONLY as part of Squeak, under
* the terms of the Squeak License as described in `LICENSE' in the base of
* this distribution, subject to the following additional restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment to the original author(s) (and any
* other contributors mentioned herein) in the product documentation
* would be appreciated but is not required.
*
* 2. You must not distribute (or make publicly available by any
* means) a modified copy of this file unless you first rename it.
*
* 3. This notice must not be removed or altered in any source distribution.
*
* Using (or modifying this file for use) in any context other than Squeak
* changes these copyright conditions. Read the file `COPYING' in the
* directory `platforms/unix/doc' before proceeding with any such use.
*/
#include "sq.h"
#include "aio.h"
#include <audio/audiolib.h>
#include <assert.h>
#ifdef DEBUG
# define dprintf printf
#else
static void dprintf(char *fmt, ...) {}
#endif
#ifdef WORDS_BIGENDIAN
# define AU_FORMAT AuFormatLinearSigned16MSB
#else
# define AU_FORMAT AuFormatLinearSigned16LSB
#endif
static int sound_Stop(void);
/** routines for converting samples to different formats **/
/* XXX actually, I don't think NAS will need conversion. However,
SunOS could use it... */
#define BYTES_PER_SAMPLE 2 /* Squeak always uses 16-bit samples */
#ifdef HAS_MSB_FIRST
# define IS_BIGENDIAN 1
#else
# define IS_BIGENDIAN 0
#endif
/* specification of the output format. (Squeak's format is fixed:
stereo, 16-bit, host-endian, signed) */
static int fmtBytes= 2; /* bytes per sample the device is using */
static int fmtSigned= 1; /* whether the device uses signed samples */
static int fmtStereo= 0; /* whether the device is in stereo */
static int fmtIsBigendian= 0; /* whether the device is big-endion */
/* whether the device is differently-ended than Squeak */
#define auSwapBytes (fmtIsBigendian != IS_BIGENDIAN)
/* calculate number of bytes per frame, given the current mode */
static int bytesPerPlayFrame(void)
{
#if 1 /* ikp doesn't understand why this ... */
int bytes= 1;
bytes *= fmtBytes;
if (fmtStereo)
bytes *= 2;
return bytes;
#else /* ... doesn't look like this */
return fmtBytes * (fmtStereo ? 2 : 1);
#endif
}
#define FAIL(X) { success(false); return X; }
static AuServer *server = NULL; /* the audio server to write to */
static int recording=0; /* whether this module is recording
or playing. Only valid if
server!= NULL . */
static AuFlowID flow; /* the NAS flow being used */
static int semaIndex; /* the semaphore to signal Squeak with */
static int stereo; /* whether Squeak sees stereo or not */
static int bytesAvail; /* current number of bytes that may be written
or read from the server */
static int sampleRate; /* the sample rate of the device.
Currently not accurate. */
static int sound_AvailableSpace(void)
{
if(server == NULL)
return 0;
return bytesAvail;
}
static int sound_InsertSamplesFromLeadTime(int frameCount, int srcBufPtr,
int samplesOfLeadTime)
{
/* not possible, I don't think using NAS */
success(false);
return 0;
}
static int sound_Stop(void)
{
if(server != NULL) {
aioDisable(AuServerConnectionNumber(server));
AuCloseServer(server);
server = NULL;
}
return 0;
}
static int sound_PlaySamplesFromAtLength(int frameCount, int arrayIndex, int startIndex)
{
int bytesToPlay;
int framesToPlay;
char *buf; /* buffer to play from; it may not be arrayIndex if a
conversion is necessary */
dprintf("PlaySamples(frameCount=%d, arrayIndex=%d, startIndex=%d\n",
frameCount, arrayIndex, startIndex);
/* figure out how much to play */
bytesToPlay = frameCount * bytesPerPlayFrame();
if (bytesToPlay > bytesAvail)
bytesToPlay = bytesAvail;
framesToPlay = bytesToPlay / bytesPerPlayFrame();
/* convert the buffer when not in stereo; when playing back, Squeak
will send mono data as stereo, where the right channel is to be
ignored */
if(stereo)
{
buf= (char *) (arrayIndex + 4*startIndex);
}
else
{
int i;
short *sbuf; /* the buffer, as short's instead of char's */
dprintf("converting\n");
buf= malloc(2 * frameCount);
if(buf == NULL)
{
fprintf(stderr, "out of memory\n");
return 0;
}
sbuf= (short *) buf;
for(i=0; i<frameCount; i++)
{
sbuf[i]= ((short *) (arrayIndex + 4*startIndex)) [2*i];
}
}
dprintf("writing %d bytes (%d frames)\n", bytesToPlay, framesToPlay);
AuWriteElement(server, flow, 0,
bytesToPlay,
buf,
AuFalse,
NULL);
AuFlush(server);
bytesAvail -= bytesToPlay;
if(!stereo)
{
free(buf);
}
return framesToPlay;
}
/* Process audio events from the NAS server. The same routine is used
whether we are recording or playing back */
static void handleAudioEvents(int fd, void *data, int flags)
{
if(!server) {
dprintf( "handleAudioEvents called while unconnected!\n");
return;
}
/* read events once */
AuEventsQueued(server, AuEventsQueuedAfterReading);
/* then loop through the read queue */
while(AuEventsQueued(server, AuEventsQueuedAlready)) {
AuEvent event;
AuNextEvent(server, AuTrue, &event);
dprintf("event of type %d\n", event.type);
switch(event.type) {
case 0:
{
AuErrorEvent *errEvent = (AuErrorEvent *) &event;
char errdesc[1000];
AuGetErrorText(server, errEvent->error_code, errdesc, sizeof(errdesc));
fprintf(stderr, "audio error: %s\n", errdesc);
sound_Stop();
return; /* return, not break, so that we don't
process the now-closed server any longer! */
}
case AuEventTypeElementNotify:
{
AuElementNotifyEvent *enEvent = (AuElementNotifyEvent *)&event;
switch(enEvent->kind) {
case AuElementNotifyKindLowWater:
dprintf("low water event\n");
bytesAvail += enEvent->num_bytes;
break;
case AuElementNotifyKindHighWater:
dprintf("high water event\n");
bytesAvail += enEvent->num_bytes;
break;
case AuElementNotifyKindState:
dprintf("state change (%d->%d)\n",
enEvent->prev_state,
enEvent->cur_state);
bytesAvail += enEvent->num_bytes;
if(enEvent->cur_state == AuStatePause) {
/* if the flow has stopped, then arrange for it to get started again */
/* XXX there is probably a more intelligent place to do
this, in case there is a real reason it has paused */
dprintf("unpausing\n");
AuStartFlow(server, flow, NULL);
AuFlush(server);
}
break;
}
}
}
}
if(bytesAvail > 0) {
dprintf("bytesAvail: %d\n", bytesAvail);
signalSemaphoreWithIndex(semaIndex);
}
aioHandle(fd, handleAudioEvents, flags & AIO_RW);
}
static int sound_PlaySilence(void)
{
return 0;
}
static AuDeviceID choose_nas_device(AuServer *server, int samplesPerSec, int stereo, int recording)
{
int desiredDeviceKind=
recording ?
AuComponentKindPhysicalInput :
AuComponentKindPhysicalOutput;
int desired_channels= stereo ? 2 : 1;
int i;
/* look for a physical device of the proper kind, with the proper number of channels */
for (i = 0; i < AuServerNumDevices(server); i++) {
if((AuDeviceKind(AuServerDevice(server, i))
== desiredDeviceKind)
&& (AuDeviceNumTracks(AuServerDevice(server, i))
== desired_channels))
return AuDeviceIdentifier(AuServerDevice(server, i));
}
/* look for a physical device of the proper kind; ignore number of channels */
for (i = 0; i < AuServerNumDevices(server); i++) {
if(AuDeviceKind(AuServerDevice(server, i))
== desiredDeviceKind)
return AuDeviceIdentifier(AuServerDevice(server, i));
}
return AuNone;
}
static int sound_Start(int frameCount, int samplesPerSec, int stereo0, int semaIndex0)
{
AuElement elements[2]; /* first is a client element, second is
a device output element */
AuDeviceID device; /* ID of the device to play to */
/* open the server */
dprintf("opening server\n");
server = AuOpenServer(NULL, 0, NULL, 0, NULL, NULL);
if(server == NULL) {
dprintf("failed to open audio server\n");
return false;
}
/* XXX should check the protocol version! */
/* record requested info */
semaIndex = semaIndex0;
stereo = stereo0;
sampleRate= samplesPerSec;
/* pick a device to play to */
device = choose_nas_device(server, samplesPerSec, stereo, 0);
if(device == AuNone) {
dprintf("no available device on the server!\n");
AuCloseServer(server);
server = NULL;
return false;
}
/* set up output parameters */
fmtBytes=2;
fmtSigned=1;
fmtStereo=stereo;
fmtIsBigendian=0;
recording=0;
/* create a flow to write on */
dprintf("creating flow\n");
flow = AuCreateFlow(server, NULL);
/* create client and device elements to play with */
dprintf("creating elements(%d,%d)\n",
frameCount, frameCount / 4);
AuMakeElementImportClient(&elements[0],
samplesPerSec,
AuFormatLinearSigned16LSB, /* XXX this should be chosen based on the platform */
stereo ? 2 : 1,
AuTrue,
2*frameCount, /* max: 2 buffers */
frameCount, /* low */
0, NULL);
AuMakeElementExportDevice(&elements[1],
0,
device,
samplesPerSec,
AuUnlimitedSamples,
0, NULL);
/* set up the flow with these elements */
AuSetElements(server, flow,
AuTrue,
2, elements,
NULL);
/* start her up */
dprintf("starting flow\n");
AuStartFlow(server, flow, NULL);
AuFlush(server);
/* initialize the space indication */
bytesAvail = 0;
/* arrange to be informed when events come in from the server */
aioEnable(AuServerConnectionNumber(server), 0, AIO_EXT);
aioHandle(AuServerConnectionNumber(server), handleAudioEvents, AIO_R);
return true;
}
/* StartRecording: open the device for recording.
XXX this routine is almost identical to snd_Start(). The two should
be factored into a single function!
*/
static int sound_StartRecording(int desiredSamplesPerSec, int stereo0, int semaIndex0)
{
AuElement elements[2]; /* elements for the NAS flow to assemble:
element 0 = physical input
element 1 = client export */
AuDeviceID device; /* physical device ID to use */
dprintf("StartRecording\n");
sound_Stop();
dprintf("opening server\n");
server = AuOpenServer(NULL, 0, NULL, 0, NULL, NULL);
if(server == NULL) {
dprintf("failed to open audio server\n");
return false;
}
/* XXX check protocol version of the server */
semaIndex= semaIndex0;
stereo= stereo0;
sampleRate= desiredSamplesPerSec;
device= choose_nas_device(server, desiredSamplesPerSec, stereo, 1);
if(device == AuNone) {
dprintf("no available device on the server!\n");
AuCloseServer(server);
server = NULL;
return false;
}
/* record format info */
fmtBytes=2;
fmtSigned=1;
fmtStereo=stereo;
fmtIsBigendian=0;
recording=1;
/* create a flow to read from */
dprintf("creating flow\n");
flow = AuCreateFlow(server, NULL);
/* create client and device elements to record with */
dprintf("creating elements\n");
AuMakeElementImportDevice(&elements[0],
desiredSamplesPerSec, /* XXX should use the actual sampling rate of device */
device,
AuUnlimitedSamples,
0, NULL);
AuMakeElementExportClient(&elements[1],
0,
desiredSamplesPerSec,
AuFormatLinearSigned16LSB, /* XXX this should be chosen based on the platform */
stereo ? 2 : 1,
AuTrue,
1000000, /* was AuUnlimitedSamples */
1000, /* water mark: go ahead and send frequently! */
0, NULL);
/* set up the flow with these elements */
AuSetElements(server, flow,
AuTrue,
2, elements,
NULL);
/* start her up */
dprintf("starting flow\n");
AuStartFlow(server, flow, NULL);
AuFlush(server);
/* initialize the space indication */
bytesAvail = 0;
/* arrange to be informed when events come in from the server */
aioEnable(AuServerConnectionNumber(server), NULL, AIO_EXT);
aioHandle(AuServerConnectionNumber(server), handleAudioEvents, AIO_W);
return true;
}
static int sound_StopRecording(void)
{
return sound_Stop();
}
static double sound_GetRecordingSampleRate(void)
{
return sampleRate;
}
static int sound_RecordSamplesIntoAtLength(int buf, int startSliceIndex,
int bufferSizeInBytes)
{
int bytesToRead;
int sliceSize= (stereo ? 4 : 2); /* a "slice" seems to be a "frame": one sample from each channel */
dprintf("RecordSamplesIntoAtLength(buf=%d, startSliceIndex=%d, bufferSizeInBytes=%d\n",
buf, startSliceIndex, bufferSizeInBytes);
/* sanity checks */
if(server==NULL || !recording) {
success(false);
return 0;
}
if(bytesAvail <= 0)
return 0;
/* figure out how much to read */
bytesToRead= bufferSizeInBytes - (startSliceIndex * sliceSize);
if(bytesToRead > bytesAvail)
bytesToRead= bytesAvail;
dprintf("reading %d bytes\n", bytesToRead);
/* read it */
AuReadElement(server,
flow,
1, /* element 1 is the client export */
bytesToRead,
(char *) (buf + startSliceIndex*sliceSize),
NULL);
bytesAvail -= bytesToRead;
return bytesToRead/sliceSize; /* return number of samples read (or slices?!) */
}
/* mixer settings */
static int sound_SetRecordLevel(int level)
{
return level;
}
static void sound_Volume(double *left, double *right)
{
return;
}
static void sound_SetVolume(double left, double right)
{
return;
}
#include "SqSound.h"
SqSoundDefine(NAS);
#include "SqModule.h"
static void sound_parseEnvironment(void) {}
static int sound_parseArgument(int argc, char **argv)
{
if (!strcmp(argv[0], "-nas")) return 1;
return 0;
}
static void sound_printUsage(void) {}
static void sound_printUsageNotes(void) {}
static void *sound_makeInterface(void) { return &sound_NAS_itf; }
SqModuleDefine(sound, NAS);
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:48:56
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-MacOSX
In directory sc8-pr-cvs1:/tmp/cvs-serv30463/vm-sound-MacOSX
Added Files:
Makefile.inc acinclude.m4 sqUnixSoundDebug.h
sqUnixSoundMacOSX.c
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: Makefile.inc ---
PLIBS= -Wl,-framework -Wl,CoreAudio \
-Wl,-framework -Wl,AudioToolbox
--- NEW FILE: acinclude.m4 ---
# -*- sh -*-
AC_MSG_CHECKING([for Mac OS X CoreAudio])
AC_TRY_COMPILE([#include <CoreAudio/CoreAudio.h>],[kAudioHardwareNoError;],[
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
AC_PLUGIN_DISABLE
])
--- NEW FILE: sqUnixSoundDebug.h ---
#if 1
# define startSpy();
# define stopSpy();
#else
#include <pthread.h>
void rect(int h, int c, float l, float r)
{
extern long *dpyPixels;
extern int dpyPitch;
int left= 250, width= 100, height= 2;
long *base= dpyPixels;
int pitch= dpyPitch / sizeof(long);
int x, y;
//printf("rect %d %d %g %g\n", h, c, l, r);
assert(l >= 0.0); assert(r >= 0.0);
assert(l <= 1.0); assert(r <= 1.0);
base+= (int)left;
base+= (int)(h * height * pitch);
for (y= 0; y < height; ++y)
{
for (x= (int)(width * l); x < (int)(width * r); ++x)
((long *)base)[x]= c;
base+= pitch;
}
}
void fill(int h, int c, float l, float r)
{
if (r > 1.0)
{
rect(h, c, l, 1.0);
rect(h, c, 0.0, r - 1.0);
}
else
rect(h, c, l, r);
}
#if (USE_FIFO)
void update(void)
{
if (output)
{
Buffer *b= output->buffer;
static int phase= 0;
float size= b->size;
float out= b->optr / size;
float avail= b->avail / size;
extern long *dpyPixels;
fill(0,BLACK, 0.0, out);
fill(0,GREEN, out, out+avail);
if (out + avail < 1.0)
fill(0,BLACK, out+avail, 1.0);
fill(2,GREEN, 0.0, avail);
fill(2,BLACK, avail, 1.0);
phase= 1 - phase;
feedback(10, phase * WHITE);
memcpy(dpyPixels + 400, output->buffer->data, 400);
}
}
#else
void update(void)
{
}
#endif
static int running= 0;
static pthread_t spyThread;
static void *spy(void *ignored)
{
struct sched_param params;
int policy;
if (pthread_getschedparam(pthread_self(), &policy, ¶ms))
perror("getschedparam");
params.sched_priority+= 9;
if (pthread_setschedparam(pthread_self(), SCHED_RR, ¶ms))
perror("setschedparam");
for (;;)
{
update();
usleep(10000);
}
}
void startSpy(void)
{
if (!pthread_create(&spyThread, 0, spy, 0))
running= 1;
else
perror("pthread_create(spy)");
}
void stopSpy(void)
{
if (running)
{
if (!pthread_cancel(spyThread))
running= 0;
else
perror("pthread_cancel(spy)");
running= 0;
}
}
#endif // (DEBUG)
--- NEW FILE: sqUnixSoundMacOSX.c ---
/* sqUnixSoundMacOSX.c -- sound support for CoreAudio on Mac OS 10
*
* Author: Ian...@in...
*
* Last edited: 2003-02-09 17:52:51 by piumarta on emilia.inria.fr
*
* Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
* as listed elsewhere in this file.
* All rights reserved.
*
* You are NOT ALLOWED to distribute modified versions of this file
* under its original name. If you want to modify it and then make
* your modifications available publicly, rename the file first.
*
* This file is part of Unix Squeak.
*
* This file 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.
[...1808 lines suppressed...]
#endif // TESTING
#include "SqSound.h"
SqSoundDefine(MacOSX);
#include "SqModule.h"
static void sound_parseEnvironment(void) {}
static int sound_parseArgument(int argc, char **argv) { return 0; }
static void sound_printUsage(void) {}
static void sound_printUsageNotes(void) {}
static void *sound_makeInterface(void) { return &sound_MacOSX_itf; }
SqModuleDefine(sound, MacOSX);
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:48:56
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-X11
In directory sc8-pr-cvs1:/tmp/cvs-serv30463/vm-display-X11
Added Files:
Makefile.in acinclude.m4 sqUnixMozilla.c sqUnixOpenGL.X11
sqUnixX11.c
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: Makefile.in ---
# Makefile for X11 Window System support -*- makefile -*-
#
# Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
# as listed elsewhere in this file.
# All rights reserved.
#
# You are NOT ALLOWED to distribute modified versions of this file
# under its original name. If you want to modify it and then make
# your modifications available publicly, rename the file first.
#
# This file is part of Unix Squeak.
#
# This file 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.
#
# You may use and/or distribute this file ONLY as part of Squeak, under
# the terms of the Squeak License as described in `LICENSE' in the base of
# this distribution, subject to the following additional restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment to the original author(s) (and any
# other contributors mentioned herein) in the product documentation
# would be appreciated but is not required.
#
# 2. You must not distribute (or make publicly available by any
# means) a modified copy of this file unless you first rename it.
#
# 3. This notice must not be removed or altered in any source distribution.
#
# Using (or modifying this file for use) in any context other than Squeak
# changes these copyright conditions. Read the file `COPYING' in the
# directory `platforms/unix/doc' before proceeding with any such use.
#
# Author: ian...@in...
#
# Last edited: 2003-02-02 17:23:09 by piumarta on emilia.local.
[make_cfg]
[make_plg]
TARGET = vm-display-X11$a
OBJS = sqUnixX11$o sqUnixMozilla$o
XCFLAGS = $(X_CFLAGS)
XINCLUDES = [includes] $(X_INCLUDES) \
-I$(topdir)/platforms/Cross/plugins/FilePlugin \
-I$(topdir)/platforms/Cross/plugins/B3DAcceleratorPlugin \
-I$(topdir)/platforms/unix/plugins/B3DAcceleratorPlugin
$(TARGET) : $(OBJS) Makefile
$(LINK) $(TARGET) $(OBJS) $(X_LIBS)
$(RANLIB) $(TARGET)
[make_targets]
.force :
--- NEW FILE: acinclude.m4 ---
# -*- sh -*-
AC_ARG_WITH(x,
[ --without-x disable X Window System support [default=enabled]],
[have_x="$withval"],
[have_x="yes"])
###xxx FIXME (AGAIN): mandrake needs explicit -lpthread
VMLIBS=${LIBS}
VMCFLAGS=${CFLAGS}
VMCPPFLAGS=${CPPFLAGS}
VMINCLUDES=${INCLUDES}
if test "$have_x" = "yes"; then
AC_PATH_XTRA
LIBS="${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS} ${LIBS}"
# if test "${x_libraries}" != ""; then
# CFLAGS="${X_CFLAGS} ${CFLAGS} -L${x_libraries}"
# fi
if test "${x_includes}" != ""; then
CPPFLAGS="${CPPFLAGS} -I${x_includes}"
INCLUDES="${INCLUDES} -I${x_includes}"
X_INCLUDES="-I${x_includes}"
fi
AC_CHECK_LIB(X11, XOpenDisplay, [
AC_DEFINE(USE_X11, [1])
LIBS="${LIBS} -lX11"
AC_CHECK_LIB(Xext, XShmAttach)
if test "$have_gl" = ""; then have_gl="no"; fi
AC_CHECK_HEADERS(GL/gl.h, [
have_gl=yes
AC_DEFINE(USE_X11_GLX, [1])
AC_CHECK_LIB(GL,glIsEnabled)
])
],[
AC_PLUGIN_DISABLE
])
else
AC_PLUGIN_DISABLE
fi
X_LIBS=${LIBS}
AC_SUBST(X_LIBS)
X_CFLAGS=${CFLAGS}
AC_SUBST(X_CFLAGS)
X_CPPFLAGS=${CPPFLAGS}
AC_SUBST(X_CPPFLAGS)
X_INCLUDES=${INCLUDES}
AC_SUBST(X_INCLUDES)
LIBS=${VMLIBS}
CFLAGS=${VMCFLAGS}
CPPFLAGS=${VMCPPFLAGS}
INCLUDES=${VMINCLUDES}
--- NEW FILE: sqUnixMozilla.c ---
/* sqUnixMozilla.c -- support for Squeak Netscape plugin
*
* Author: Bert Freudenberg <be...@is...>
*
* Last edited: 2003-02-02 15:24:12 by piumarta on emilia.local.
*
* Originally based on Andreas Raab's sqWin32PluginSupport
*
* Notes: The plugin window handling stuff is in sqXWindow.c.
* browserProcessCommand() is called when data is available
*/
#include "sq.h"
#if defined(USE_X11)
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <unistd.h>
#include <stdarg.h>
#include <fcntl.h>
#include <errno.h>
#include "FilePlugin.h"
#define DEBUG
#ifdef DEBUG
void DPRINT(char *format, ...)
{
static int debug= 42;
if (42 == debug)
debug= (NULL != getenv("NPSQUEAK_DEBUG"));
if (!debug)
{
return;
}
else
{
static FILE *file= 0;
if (!file)
{
file= fopen("/tmp/npsqueak.log", "a+");
}
if (file) {
va_list ap;
va_start(ap, format);
vfprintf(file, format, ap);
va_end(ap);
fflush(file);
}
}
}
#else
void DPRINT(char *, ...) { }
#endif
/* from sqXWindow.c */
extern Display* stDisplay;
extern Window stWindow;
extern Window browserWindow;
extern Window stParent;
extern int browserPipes[2];
/* from interpret.c */
int stackObjectValue(int);
int stackIntegerValue(int);
int isBytes(int);
int byteSizeOf(int);
void *firstIndexableField(int);
int push(int);
int pop(int);
int positive32BitIntegerFor(int);
int nilObject();
int instantiateClassindexableSize(int, int);
int classByteArray();
int failed();
int pushBool(int);
/* prototypes */
static void browserReceive(void *buf, size_t count);
static void browserSend(const void *buf, size_t count);
static void browserSendInt(int value);
static void browserReceiveData();
static void browserGetURLRequest(int id, char* url, int urlSize,
char* target, int targetSize);
#ifdef NOT_USED
static void browserPostURLRequest(int id, char* url, int urlSize,
char* target, int targetSize,
char* postData, int postDataSize);
#endif
typedef struct sqStreamRequest {
char *localName;
int semaIndex;
int state;
} sqStreamRequest;
#define MAX_REQUESTS 128
#define SQUEAK_READ 0
#define SQUEAK_WRITE 1
#define inBrowser\
(-1 != browserPipes[SQUEAK_READ])
#define CMD_BROWSER_WINDOW 1
#define CMD_GET_URL 2
#define CMD_POST_URL 3
#define CMD_RECEIVE_DATA 4
static sqStreamRequest *requests[MAX_REQUESTS];
/* primitives called from Squeak */
/*
primitivePluginBrowserReady
Return true if a connection to the browser
has been established. Only necessary if some
sort of asynchronous communications are used.
*/
int display_primitivePluginBrowserReady()
{
if (inBrowser)
{
pop(1);
pushBool(1);
}
else
primitiveFail();
return 1;
}
/*
primitivePluginRequestUrlStream: url with: semaIndex
Request a URL from the browser. Signal semaIndex
when the result of the request can be queried.
Returns a handle used in subsequent calls to plugin
stream functions.
Note: A request id is the index into requests[].
*/
int display_primitivePluginRequestURLStream()
{
sqStreamRequest *req;
int id, url, length, semaIndex;
if (!inBrowser) return primitiveFail();
DPRINT("VM: primitivePluginRequestURLStream()\n");
for (id=0; id<MAX_REQUESTS; id++) {
if (!requests[id]) break;
}
if (id >= MAX_REQUESTS) return primitiveFail();
semaIndex= stackIntegerValue(0);
url= stackObjectValue(1);
if (failed()) return 0;
if (!isBytes(url)) return primitiveFail();
req= calloc(1, sizeof(sqStreamRequest));
if (!req) return primitiveFail();
req->localName= NULL;
req->semaIndex= semaIndex;
req->state= -1;
requests[id]= req;
length= byteSizeOf(url);
browserGetURLRequest(id, firstIndexableField(url), length, NULL, 0);
pop(3);
push(positive32BitIntegerFor(id));
DPRINT("VM: request id: %i\n", id);
return 1;
}
/*
primitivePluginRequestURL: url target: target semaIndex: semaIndex
Request a URL into the given target.
*/
int display_primitivePluginRequestURL()
{
sqStreamRequest *req;
int url, urlLength;
int target, targetLength;
int id, semaIndex;
if (!browserWindow) return primitiveFail();
for (id=0; id<MAX_REQUESTS; id++) {
if (!requests[id]) break;
}
if (id >= MAX_REQUESTS) return primitiveFail();
semaIndex= stackIntegerValue(0);
target= stackObjectValue(1);
url= stackObjectValue(2);
if (failed()) return 0;
if (!isBytes(url) || !isBytes(target)) return primitiveFail();
urlLength= byteSizeOf(url);
targetLength= byteSizeOf(target);
req= calloc(1, sizeof(sqStreamRequest));
if(!req) return primitiveFail();
req->localName= NULL;
req->semaIndex= semaIndex;
req->state= -1;
requests[id]= req;
browserGetURLRequest(id, firstIndexableField(url), urlLength, firstIndexableField(target), targetLength);
pop(4);
push(positive32BitIntegerFor(id));
return 1;
}
/*
primitivePluginPostURL
*/
int display_primitivePluginPostURL()
{
fprintf(stderr, "primitivePluginPostURL() not yet implemented\n");
return primitiveFail();
}
/*
primitivePluginRequestFileHandle: id
After a URL file request has been successfully
completed, return a file handle for the received
data. Note: The file handle must be read-only for
security reasons.
*/
int display_primitivePluginRequestFileHandle()
{
sqStreamRequest *req;
int id, fileOop, openFn;
id= stackIntegerValue(0);
if (failed()) return 0;
if (id < 0 || id >= MAX_REQUESTS) return primitiveFail();
req= requests[id];
if (!req || !req->localName) return primitiveFail();
fileOop= nilObject();
if (req->localName)
{
DPRINT("VM: Creating file handle for %s\n", req->localName);
openFn= ioLoadFunctionFrom("fileOpenNamesizewritesecure", "FilePlugin");
if (!openFn)
{
DPRINT("VM: Couldn't load fileOpenName:size:write:secure: from FilePlugin!\n");
return primitiveFail();
}
fileOop= ((int (*) (char *, int, int, int)) openFn)
(req->localName, strlen(req->localName), 0 /* readonly */, 0 /* insecure */);
/* if file ends in a $, it was a temp link created by the plugin */
if ('$' == req->localName[strlen(req->localName) - 1])
{
DPRINT("VM: unlink %s\n", req->localName);
if (-1 == unlink(req->localName))
DPRINT("VM: unlink failed: %s\n", strerror(errno));
}
if (failed())
{
DPRINT("VM: file open failed\n");
return 0;
}
}
pop(2);
push(fileOop);
return 1;
}
/*
primitivePluginDestroyRequest: id
Destroy a request that has been issued before.
*/
int display_primitivePluginDestroyRequest()
{
sqStreamRequest *req;
int id;
id= stackIntegerValue(0);
if (id < 0 || id >= MAX_REQUESTS) return primitiveFail();
req= requests[id];
if (req) {
if (req->localName) free(req->localName);
free(req);
}
requests[id]= NULL;
pop(1);
return 1;
}
/*
primitivePluginRequestState: id
Return true if the operation was successfully completed.
Return false if the operation was aborted.
Return nil if the operation is still in progress.
*/
int display_primitivePluginRequestState()
{
sqStreamRequest *req;
int id;
id= stackIntegerValue(0);
if (id < 0 || id >= MAX_REQUESTS) return primitiveFail();
req= requests[id];
if (!req) return primitiveFail();
pop(2);
if (req->state == -1) push(nilObject());
else pushBool(req->state);
return 1;
}
/* helper functions */
static void browserReceive(void *buf, size_t count)
{
ssize_t n;
n= read(browserPipes[SQUEAK_READ], buf, count);
if (n == -1)
perror("Squeak read failed:");
if (n < count)
fprintf(stderr, "Squeak read too few data from pipe\n");
}
static void browserSend(const void *buf, size_t count)
{
ssize_t n;
n= write(browserPipes[SQUEAK_WRITE], buf, count);
if (n == -1)
perror("Squeak plugin write failed:");
if (n < count)
fprintf(stderr, "Squeak wrote too few data to pipe\n");
}
static void browserSendInt(int value)
{
browserSend(&value, 4);
}
/*
browserReceiveData:
Called in response to a CMD_RECEIVE_DATA message.
Retrieves the data file name and signals the semaphore.
*/
static void browserReceiveData()
{
char *localName= NULL;
int id, ok;
browserReceive(&id, 4);
browserReceive(&ok, 4);
DPRINT("VM: receiving data id: %i state %i\n", id, ok);
if (ok == 1) {
int length= 0;
browserReceive(&length, 4);
if (length) {
localName= malloc(length+1);
browserReceive(localName, length);
localName[length]= 0;
DPRINT("VM: got filename %s\n", localName);
}
}
if (id >= 0 && id < MAX_REQUESTS) {
sqStreamRequest *req= requests[id];
if (req) {
req->localName= localName;
req->state= ok;
DPRINT("VM: signaling semaphore, state=%i\n", ok);
/* synchronizedSignalSemaphoreWithIndex(req->semaIndex);*/
signalSemaphoreWithIndex(req->semaIndex);
}
}
}
/*
browserGetURLRequest:
Notify plugin to get the specified url into target
*/
static void browserGetURLRequest(int id, char* url, int urlSize,
char* target, int targetSize)
{
if (!inBrowser) {
fprintf(stderr, "Cannot submit URL request -- "
"there is no connection to a browser\n");
return;
}
browserSendInt(CMD_GET_URL);
browserSendInt(id);
browserSendInt(urlSize);
if (urlSize > 0)
browserSend(url, urlSize);
browserSendInt(targetSize);
if (targetSize > 0)
browserSend(target, targetSize);
}
/*
browserPostURLRequest:
Notify plugin to post data to the specified url and get result into target
*/
#ifdef NOT_USED
static void browserPostURLRequest(int id, char* url, int urlSize,
char* target, int targetSize,
char* postData, int postDataSize)
{
if (!inBrowser) {
fprintf(stderr, "Cannot submit URL post request -- "
"there is no connection to a browser\n");
return;
}
browserSendInt(CMD_POST_URL);
browserSendInt(id);
browserSendInt(urlSize);
if (urlSize > 0)
browserSend(url, urlSize);
browserSendInt(targetSize);
if (targetSize > 0)
browserSend(target, targetSize);
browserSendInt(postDataSize);
if (postDataSize > 0)
browserSend(postData, postDataSize);
}
#endif
/***************************************************************
* Functions called from sqXWindow.c
***************************************************************/
/*
browserProcessCommand:
Handle commands sent by the plugin.
*/
void browserProcessCommand(void)
{
static int firstTime= 1;
int cmd, n;
if (firstTime)
{
firstTime= 0;
/* enable non-blocking reads */
fcntl(browserPipes[SQUEAK_READ], F_SETFL, O_NONBLOCK);
}
DPRINT("VM: browserProcessCommand()\n");
n= read(browserPipes[SQUEAK_READ], &cmd, 4);
if (0 == n || (-1 == n && EAGAIN == errno))
return;
switch (cmd)
{
case CMD_RECEIVE_DATA:
/* Data is coming in */
browserReceiveData();
break;
case CMD_BROWSER_WINDOW:
/* Parent window has changed () */
browserReceive(&browserWindow, 4);
stParent= browserWindow;
DPRINT("VM: got browser window 0x%X\n", browserWindow);
break;
default:
fprintf(stderr, "Unknown command from Plugin: %i\n", cmd);
}
}
#else /* !defined(USE_X11) */
int display_primitivePluginBrowserReady() { return primitiveFail(); }
int display_primitivePluginRequestURLStream() { return primitiveFail(); }
int display_primitivePluginRequestURL() { return primitiveFail(); }
int display_primitivePluginPostURL() { return primitiveFail(); }
int display_primitivePluginRequestFileHandle() { return primitiveFail(); }
int display_primitivePluginDestroyRequest() { return primitiveFail(); }
int display_primitivePluginRequestState() { return primitiveFail(); }
#endif
--- NEW FILE: sqUnixOpenGL.X11 ---
/* sqUnixOpenGLX11.c -- support for accelerated 3D rendering under X11 -*- C -*-
*
* Author: Bert Freudenberg <be...@is...>
*
* Based on Andreas Raab's sqWin32OpenGL.c
*
* Last edited: 2003-01-31 22:40:39 by piumarta on emilia.local.
*
* History
* Nov 02: added TGraphicsTest conformant log support
* Oct 02: added Tea initialization support w/ stencil
* May 01: initial revision
*/
#include <sys/types.h>
#include "sqVirtualMachine.h"
#include "sqConfig.h"
#include "sqPlatformSpecific.h"
#include "B3DAcceleratorPlugin.h"
#if defined (B3DX_GL)
#include "sqUnixOpenGL.h"
#include <X11/X.h>
#include <stdio.h>
#include "sqOpenGLRenderer.h"
/* Plugin refs */
extern struct VirtualMachine *interpreterProxy;
static void printVisual(XVisualInfo* visinfo);
static void listVisuals();
static Display *stDisplay= NULL; /* Squeak's display */
static Window stWindow= 0; /* Squeak's main window */
static glRenderer *current= NULL;
static glRenderer allRenderer[MAX_RENDERER];
static int visualAttributes[]= {
GLX_STENCIL_SIZE, 0, /* filled in later - must be first item! */
GLX_ALPHA_SIZE, 1, /* filled in later - must be second item! */
GLX_RGBA, /* no indexed colors */
GLX_DOUBLEBUFFER, /* will swap */
GLX_LEVEL, 0, /* frame buffer, not overlay */
GLX_DEPTH_SIZE, 16, /* decent depth */
GLX_AUX_BUFFERS, 0, /* no aux buffers */
GLX_ACCUM_RED_SIZE, 0, /* no accumulation */
GLX_ACCUM_GREEN_SIZE, 0,
GLX_ACCUM_BLUE_SIZE, 0,
GLX_ACCUM_ALPHA_SIZE, 0,
None
};
static float blackLight[4]= { 0.0f, 0.0f, 0.0f, 0.0f };
/* Verbose level for debugging purposes:
0 - print NO information ever
1 - print critical debug errors
2 - print debug warnings
3 - print extra information
4 - print extra warnings
5 - print information about primitive execution
10 - print information about each vertex and face
*/
int verboseLevel= 1;
/*** create / destroy a renderer ***/
int glCreateRendererFlags(int x, int y, int w, int h, int flags)
{
glRenderer *renderer;
XVisualInfo* visinfo= 0;
int index= -1;
if (flags & ~(B3D_HARDWARE_RENDERER | B3D_SOFTWARE_RENDERER | B3D_STENCIL_BUFFER))
{
DPRINTF(1, (fp, "ERROR: Unsupported renderer flags (%d)\r", flags));
return -1;
}
if (flags & B3D_STENCIL_BUFFER)
visualAttributes[1]= 1;
else
visualAttributes[1]= 0;
/* find unused renderer */
{
int i;
for (i= 0; i < MAX_RENDERER; i++)
{
if (!allRenderer[i].used)
{
index= i;
break;
}
}
}
if (index == -1)
{
DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\r", MAX_RENDERER));
return 0;
}
renderer= &allRenderer[index];
renderer->used= True;
renderer->window= 0;
renderer->context= NULL;
DPRINTF(3, (fp, "---- Creating new renderer ----\r\r"));
/* sanity checks */
if (w < 0 || h < 0)
{
DPRINTF(1, (fp, "Negative extent (%i@%i)!\r", w, h));
goto FAILED;
}
/* choose visual and create context */
if (verboseLevel >= 3)
listVisuals();
{
visinfo= glXChooseVisual(stDisplay,
DefaultScreen(stDisplay),
visualAttributes);
if (!visinfo)
{
/* retry without alpha */
visualAttributes[3]= 0;
visinfo= glXChooseVisual(stDisplay,
DefaultScreen(stDisplay),
visualAttributes);
}
if (!visinfo)
{
DPRINTF(1, (fp, "No OpenGL visual found!\r"));
goto FAILED;
}
DPRINTF(3, (fp, "\r#### Selected GLX visual ID 0x%lx ####\r",
visinfo->visualid));
if (verboseLevel >= 3)
printVisual(visinfo);
renderer->context= glXCreateContext(stDisplay, visinfo, 0, GL_TRUE);
if (!renderer->context)
{
DPRINTF(1, (fp, "Creating GLX context failed!\r"));
goto FAILED;
}
DPRINTF(3, (fp, "\r#### Created GLX context ####\r" ));
/* create window */
{
XSetWindowAttributes attributes;
unsigned long valuemask= 0;
attributes.colormap= XCreateColormap(stDisplay,
DefaultRootWindow(stDisplay),
visinfo->visual,
AllocNone);
valuemask|= CWColormap;
attributes.background_pixel= BlackPixel(stDisplay, DefaultScreen(stDisplay));
valuemask|= CWBackPixel;
renderer->window= XCreateWindow(stDisplay, stWindow, x, y, w, h, 0,
visinfo->depth, InputOutput, visinfo->visual,
valuemask, &attributes);
if (!renderer->window)
{
DPRINTF(1, (fp, "Failed to create client window\r"));
goto FAILED;
}
XMapWindow(stDisplay, renderer->window);
}
DPRINTF(3, (fp, "\r#### Created window ####\r" ));
XFree(visinfo);
visinfo= 0;
}
/* Make the context current */
if (!glXMakeCurrent(stDisplay, renderer->window, renderer->context))
{
DPRINTF(1, (fp, "Failed to make context current\r"));
goto FAILED;
}
renderer->bufferRect[0]= x;
renderer->bufferRect[1]= y;
renderer->bufferRect[2]= w;
renderer->bufferRect[3]= h;
DPRINTF(3, (fp, "\r### Renderer created! ###\r"));
/* setup user context */
glDisable(GL_LIGHTING);
glDisable(GL_COLOR_MATERIAL);
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
glEnable(GL_DITHER);
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glDepthFunc(GL_LEQUAL);
glClearDepth(1.0);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glShadeModel(GL_SMOOTH);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, blackLight);
ERROR_CHECK;
return index;
FAILED:
/* do necessary cleanup */
DPRINTF(1, (fp, "OpenGL initialization failed\r"));
if (visinfo)
XFree(visinfo);
if (renderer->context)
glXDestroyContext(stDisplay, renderer->context);
if (renderer->window)
XDestroyWindow(stDisplay, renderer->window);
return -1;
}
int glDestroyRenderer(int handle)
{
glRenderer *renderer= glRendererFromHandle(handle);
DPRINTF(3, (fp, "\r--- Destroying renderer ---\r"));
if (!renderer)
return 1; /* already destroyed */
if (!glMakeCurrentRenderer(NULL))
return 0;
glXDestroyContext(stDisplay, renderer->context);
XDestroyWindow(stDisplay, renderer->window);
renderer->window= 0;
renderer->context= NULL;
renderer->used= False;
return 1;
}
/*** helpers ***/
glRenderer *glRendererFromHandle(int handle)
{
DPRINTF(7, (fp, "Looking for renderer id: %i\r", handle));
if (handle < 0 || handle >= MAX_RENDERER)
return NULL;
if (allRenderer[handle].used)
return allRenderer+handle;
return NULL;
}
int glIsOverlayRenderer(int handle)
{
/* we always use overlay renderers */
return 1;
}
int glSwapBuffers(glRenderer *renderer)
{
if (!renderer || !renderer->used)
return 0;
glXSwapBuffers(stDisplay, renderer->window);
return 1;
}
int glMakeCurrentRenderer(glRenderer *renderer)
{
if (current == renderer)
return 1;
if (renderer && !renderer->used)
return 0;
if (renderer)
{
if (!glXMakeCurrent(stDisplay, renderer->window, renderer->context))
{
DPRINTF(1, (fp, "Failed to make context current\r"));
return 0;
}
}
else
{
glXMakeCurrent(stDisplay, 0, NULL);
}
current= renderer;
return 1;
}
int glSetBufferRect(int handle, int x, int y, int w, int h)
{
glRenderer *renderer= glRendererFromHandle(handle);
if (!renderer || !glMakeCurrentRenderer(renderer))
return 0;
if (w < 1 || h < 1)
return 0;
XMoveResizeWindow(stDisplay, renderer->window, x, y, w, h);
renderer->bufferRect[0]= x;
renderer->bufferRect[1]= y;
renderer->bufferRect[2]= w;
renderer->bufferRect[3]= h;
return 1;
}
int glSetVerboseLevel(int level)
{
verboseLevel= level;
return 1;
}
int glGetIntPropertyOS(int handle, int prop)
{
GLint v;
glRenderer *renderer= glRendererFromHandle(handle);
if (!renderer || !glMakeCurrentRenderer(renderer))
return 0;
switch(prop) {
case 1: /* backface culling */
if (!glIsEnabled(GL_CULL_FACE)) return 0;
glGetIntegerv(GL_FRONT_FACE, &v);
if (v == GL_CW) return 1;
if (v == GL_CCW) return -1;
return 0;
case 2: /* polygon mode */
glGetIntegerv(GL_POLYGON_MODE, &v);
ERROR_CHECK;
return v;
case 3: /* point size */
glGetIntegerv(GL_POINT_SIZE, &v);
ERROR_CHECK;
return v;
case 4: /* line width */
glGetIntegerv(GL_LINE_WIDTH, &v);
ERROR_CHECK;
return v;
}
return 0;
}
int glSetIntPropertyOS(int handle, int prop, int value)
{
glRenderer *renderer= glRendererFromHandle(handle);
if (!renderer || !glMakeCurrentRenderer(renderer))
return 0;
switch(prop) {
case 1: /* backface culling */
if (!value) {
glDisable(GL_CULL_FACE);
ERROR_CHECK;
return 1;
}
glEnable(GL_CULL_FACE);
glFrontFace(value == 1 ? GL_CCW : GL_CW);
ERROR_CHECK;
return 1;
case 2: /* polygon mode */
if (value == 0) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
else if (value == 1) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
else if (value == 2) glPolygonMode(GL_FRONT_AND_BACK, GL_POINT);
else return 0;
ERROR_CHECK;
return 1;
case 3: /* point size */
glPointSize(value);
ERROR_CHECK;
return 1;
case 4: /* line width */
glLineWidth(value);
ERROR_CHECK;
return 1;
}
return 0;
}
/* GLX_CONFIG_CAVEAT might not be supported */
/* but the test below is worded so it does not matter */
#ifndef GLX_CONFIG_CAVEAT
# define GLX_CONFIG_CAVEAT 0x20
# define GLX_SLOW_CONFIG 0x8001
#endif
static void printVisual(XVisualInfo* visinfo)
{
int isOpenGL;
glXGetConfig(stDisplay, visinfo, GLX_USE_GL, &isOpenGL);
if (isOpenGL)
{
int slow= 0;
int red, green, blue, alpha, stencil, depth;
glXGetConfig(stDisplay, visinfo, GLX_CONFIG_CAVEAT, &slow);
glXGetConfig(stDisplay, visinfo, GLX_RED_SIZE, &red);
glXGetConfig(stDisplay, visinfo, GLX_GREEN_SIZE, &green);
glXGetConfig(stDisplay, visinfo, GLX_BLUE_SIZE, &blue);
glXGetConfig(stDisplay, visinfo, GLX_ALPHA_SIZE, &alpha);
glXGetConfig(stDisplay, visinfo, GLX_STENCIL_SIZE, &stencil);
glXGetConfig(stDisplay, visinfo, GLX_DEPTH_SIZE, &depth);
if (slow != GLX_SLOW_CONFIG)
DPRINTF(3, (fp,"===> OpenGL visual\r"))
else
DPRINTF(3, (fp,"---> slow OpenGL visual\r"));
DPRINTF(3, (fp,"rgbaBits = %i+%i+%i+%i\r", red, green, blue, alpha));
DPRINTF(3, (fp,"stencilBits = %i\r", stencil));
DPRINTF(3, (fp,"depthBits = %i\r", depth));
}
}
static void listVisuals()
{
XVisualInfo* visinfo;
int nvisuals, i;
visinfo= XGetVisualInfo(stDisplay, VisualNoMask, NULL, &nvisuals);
for (i= 0; i < nvisuals; i++)
{
DPRINTF(3, (fp,"#### Checking pixel format (visual ID 0x%lx)\r", visinfo[i].visualid));
printVisual(&visinfo[i]);
}
XFree(visinfo);
}
/*** Module initializers ***/
int glInitialize(void)
{
int i, p;
int fn;
fn= interpreterProxy->ioLoadFunctionFrom("ioGetDisplay", NULL);
stDisplay= (fn ? ((Display *(*)(void))fn)() : 0);
if (!stDisplay)
{
DPRINTF(1,(fp,"ERROR: Failed to look up stDisplay\r"));
return 0;
}
fn= interpreterProxy->ioLoadFunctionFrom("ioGetWindow", NULL);
stWindow= (fn ? ((Window (*)(void))fn)() : 0);
if (!stWindow)
{
DPRINTF(1,(fp,"ERROR: Failed to look up stWindow\r"));
return 0;
}
for (i= 0; i < MAX_RENDERER; i++)
{
allRenderer[i].used= False;
}
return 1;
}
int glShutdown(void)
{
int i;
for (i=0; i< MAX_RENDERER; i++)
{
if (allRenderer[i].used)
{
glDestroyRenderer(i);
}
}
return 1;
}
#endif /* defined(B3DX_GL) */
--- NEW FILE: sqUnixX11.c ---
/* sqUnixX11.c -- support for display via the X Window System.
*
* Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
* as listed elsewhere in this file.
* All rights reserved.
*
* You are NOT ALLOWED to distribute modified versions of this file
* under its original name. If you want to modify it and then make
* your modifications available publicly, rename the file first.
*
* This file is part of Unix Squeak.
*
* This file 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.
*
* You may use and/or distribute this file ONLY as part of Squeak, under
* the terms of the Squeak License as described in `LICENSE' in the base of
* this distribution, subject to the following additional restrictions:
[...3895 lines suppressed...]
fprintf(stderr, "browser: window = 0x%x\n" browserWindow);
# endif
return 3;
}
else
n= 0; /* not recognised */
}
else
n= 0;
return n;
}
static void *display_makeInterface(void)
{
return &display_X11_itf;
}
#include "SqModule.h"
SqModuleDefine(display, X11);
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:48:56
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-null
In directory sc8-pr-cvs1:/tmp/cvs-serv30463/vm-display-null
Added Files:
Makefile.inc sqUnixDisplayNull.c
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: Makefile.inc ---
XCPPFLAGS= -I$(topdir)/platforms/unix/plugins/B3DAcceleratorPlugin
XCFLAGS= $(WFLAGS) $(X_CFLAGS) $(X_INCLUDES)
--- NEW FILE: sqUnixDisplayNull.c ---
#include "sq.h"
#include "aio.h"
#include "SqDisplay.h"
static char *display_winSystemName(void) { return "none"; }
static void display_winInit(void) {}
static void display_winOpen(void) {}
static void display_winSetName(char *title) {}
static int display_winImageFind(char *imageName, int size) { return 0; }
static void display_winImageNotFound(void) {}
static void display_winExit(void) {}
static int display_ioFormPrint(int b, int w, int h, int d,
double hS, double vS, int ls)
{
return 0;
}
static int display_ioBeep(void) { return 0; }
static int display_ioRelinquishProcessorForMicroseconds(int microSeconds)
{
aioPoll(microSeconds);
return 0;
}
static int display_ioProcessEvents(void)
{
aioPoll(0);
return 0;
}
static int display_ioScreenDepth(void)
{
return 1;
}
static int display_ioScreenSize(void)
{
int sws= getSavedWindowSize();
return sws ? sws : ((64 << 16) | 64);
}
static int display_ioSetCursorWithMask(int bits, int mask, int x, int y)
{
return 0;
}
static int display_ioSetFullScreen(int fullScreen)
{
return 0;
}
static int display_ioForceDisplayUpdate(void)
{
return 0;
}
static int display_ioShowDisplay(int bits, int w, int h, int d,
int l, int r, int t, int b)
{
return 0;
}
static int display_ioHasDisplayDepth(int i)
{
return 1;
}
static int display_ioSetDisplayMode(int w, int h, int d, int fullscreenFlag)
{
return 0;
}
static int display_clipboardSize(void)
{
return 0;
}
static int display_clipboardWriteFromAt(int count, int byteArrayIndex, int startIndex)
{
return 0;
}
static int display_clipboardReadIntoAt(int count, int byteArrayIndex, int startIndex)
{
return 0;
}
static int display_ioGetButtonState(void) { return 0; }
static int display_ioPeekKeystroke(void) { return 0; }
static int display_ioGetKeystroke(void) { return 0; }
static int display_ioGetNextEvent(sqInputEvent *evt) { return 0; }
static int display_ioMousePoint(void) { return 0; }
static void *display_ioGetDisplay(void) { return 0; }
static void *display_ioGetWindow(void) { return 0; }
static int display_ioGLinitialise(void) { return 0; }
static int display_ioGLcreateRenderer(glRenderer *r, int x, int y, int w, int h, int flags) { return 0; }
static int display_ioGLmakeCurrentRenderer(glRenderer *r) { return 0; }
static void display_ioGLdestroyRenderer(glRenderer *r) {}
static void display_ioGLswapBuffers(glRenderer *r) {}
static void display_ioGLsetBufferRect(glRenderer *r, int x, int y, int w, int h) {}
static int display_primitivePluginBrowserReady(void) { return primitiveFail(); }
static int display_primitivePluginRequestURLStream(void) { return primitiveFail(); }
static int display_primitivePluginRequestURL(void) { return primitiveFail(); }
static int display_primitivePluginPostURL(void) { return primitiveFail(); }
static int display_primitivePluginRequestFileHandle(void) { return primitiveFail(); }
static int display_primitivePluginDestroyRequest(void) { return primitiveFail(); }
static int display_primitivePluginRequestState(void) { return primitiveFail(); }
SqDisplayDefine(null);
#include "SqModule.h"
static void display_parseEnvironment(void) {}
static int display_parseArgument(int argc, char **argv)
{
if (!strcmp(argv[0], "-nodisplay")) return 1;
if (!strcmp(argv[0], "-headless")) return 1;
return 0;
}
static void display_printUsage(void) {}
static void display_printUsageNotes(void) {}
static void *display_makeInterface(void) { return &display_null_itf; }
SqModuleDefine(display, null);
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:42:35
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources/SqueakHelp/images
In directory sc8-pr-cvs1:/tmp/cvs-serv27896/Resources/SqueakHelp/images
Added Files:
bookicon.gif
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: bookicon.gif ---
GIF89a@
5ÉcÃ$½lå:
q§B !#vèUYµrÙR¥ÁC{:5ès*4N}ûÖÚLM8t-8wµ^pÞ³ÇYq̱['Ç.]§ª|2ê$Ô{Ó#Õ¸*QÂøÛÇÜ»w©
EÌ$p"ÁXsR*.`D
5cAÀ' JýðÆ
*ä8E!0
H¨3ôÐ"vÐÉLL ÙO}ò{$Ó
=ôÀÉaŨá$8<%1ºÀ
ô9ªÂ b,äa!Ed(0êÌ%S)³`2ÒHE/¢äÑhLÐ@ÁÄrB£P˲ÿ"¦çA [/
¤PE`ÒJ-uH_²T
!Y]t¨ÃÇBÓJ¨A ð¶a£Ð2-*Àh_x¡uàOd͹a.º®8Ê*°âi0À
pôM¤\OàPÑ-AÜ~À¹DóBmVá2z
´3ȤÒËÑH´
Âm4B1'ÈÖu@2Î ÿÃ4à|bM
j§À^Î%`Ĭs%4ÕÍ©#8+$ðAÚKä4'B@0&3¢U¡L*}#±$Ñ^AôJ]^ÓM7Ì\igëäñ3®BN@YE²@#q»ÿT«zdj@uÅà®Tö0:ÖSÏ<·Ê>ÿüþBèaâÔz ÅÖÌ<î02j%OÀïõ¨Ç8è-Øá_¨Bq»ÈaðQ*æqwÄ/mªðGØÁísA'°¼(~ÿÑ'êáÜ#~4´!¨$¯O*¬
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:42:34
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/zzz
In directory sc8-pr-cvs1:/tmp/cvs-serv27896/zzz
Added Files:
sqUnixQuartz.m
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: sqUnixQuartz.m ---
/* sqUnixQuartz.m -- display via native windows on Mac OS X -*- ObjC -*-
*
* Author: Ian Piumarta <ian...@in...>
*
* Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
* as listed elsewhere in this file.
* All rights reserved.
*
* You are NOT ALLOWED to distribute modified versions of this file
* under its original name. If you want to modify it and then make
* your modifications available publicly, rename the file first.
*
* This file is part of Unix Squeak.
*
* This file 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.
*
* You may use and/or distribute this file ONLY as part of Squeak, under
[...2538 lines suppressed...]
assert(r->context);
frame.origin.y= [topView bounds].size.height - frame.size.height - frame.origin.y;
fprintf(stderr, "view setFrame: %d %d %d %d\n",
(int)frame.origin.x, (int)frame.origin.y, (int)frame.size.width, (int)frame.size.height);
[renderView(r) setFrame: frame];
}
SqDisplayDefine(Quartz);
#include "SqModule.h"
static void *display_makeInterface(void)
{
return &display_Quartz_itf;
}
SqModuleDefine(display, Quartz);
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources In directory sc8-pr-cvs1:/tmp/cvs-serv27896/Resources Added Files: GLXUnix-ikp.2.cs Squeak.icns SqueakChanges.icns SqueakImage.icns SqueakPlugin.icns SqueakScript.icns Log Message: Ian Piumarta's release 3.5-1devel --- NEW FILE: GLXUnix-ikp.2.cs --- 'From TeaSqueak3.2 of 19 September 2002 [latest update: #362] on 5 February 2003 at 10:43:22 am'! GLX subclass: #GLXUnixQuartz instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Tea-GLX'! GLX subclass: #GLXUnixX11BE instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Tea-GLX'! GLXUnixX11BE subclass: #GLXUnixX11LE instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Tea-GLX'! !GLX class methodsFor: 'instance creation' stamp: 'ikp 2/3/2003 17:06'! new Smalltalk platformName = 'Win32' ifTrue:[^GLXWin32 basicNew initialize]. Smalltalk platformName = 'unix' ifTrue: [(Smalltalk windowSystemName = 'X11') ifTrue: [Smalltalk isLittleEndian ifTrue: [^GLXUnixX11LE basicNew initialize] ifFalse: [^GLXUnixX11BE basicNew initialize]]. (Smalltalk windowSystemName = 'Quartz') "implicitly big endian" ifTrue: [^GLXUnixQuartz basicNew initialize]. self error: 'I cannot create a GLX for this window system']. Smalltalk platformName = 'Mac OS' ifTrue:[ Smalltalk osVersion asNumber < 1000 ifTrue: [^GLXMacOS9 basicNew initialize] ifFalse:[^GLXMacOSX basicNew initialize]. ]. ^self error:'Cannot identify platform'! ! !GLXUnixQuartz methodsFor: 'accessing' stamp: 'ikp 1/7/2003 21:14'! imagePixelFormat32 ^GLBgra! ! !GLXUnixQuartz methodsFor: 'accessing' stamp: 'ikp 1/7/2003 21:14'! imagePixelType32 ^GLUnsignedInt8888Rev! ! !GLXUnixQuartz methodsFor: 'accessing' stamp: 'ikp 1/7/2003 21:14'! textureInternalFormat ^GLRgba! ! !GLXUnixQuartz methodsFor: 'accessing' stamp: 'ikp 1/7/2003 21:14'! texturePixelFormat ^GLBgra! ! !GLXUnixQuartz methodsFor: 'accessing' stamp: 'ikp 1/7/2003 21:14'! texturePixelType ^GLUnsignedInt8888Rev! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glAccum: op with: value "This method was automatically generated." "void glAccum(GLenum op, GLfloat value);" <cdecl: void 'glAccum' (ulong float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glActiveTextureARB: texture "This method was automatically generated." "void glActiveTextureARB(GLenum texture);" <cdecl: void 'glActiveTextureARB' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glAlphaFunc: func with: ref "This method was automatically generated." "void glAlphaFunc(GLenum func, GLclampf ref);" <cdecl: void 'glAlphaFunc' (ulong float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glAreTexturesResident: n with: texturez with: residences "This method was automatically generated." "GLboolean glAreTexturesResident(GLsizei n, GLuint* textures, GLboolean* residences);" <cdecl: bool 'glAreTexturesResident' (long ulong* ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glAreTexturesResidentEXT: n with: texturez with: residences "This method was automatically generated." "GLboolean glAreTexturesResidentEXT(GLsizei n, GLuint* textures, GLboolean* residences);" <cdecl: bool 'glAreTexturesResidentEXT' (long ulong* ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glArrayElement: i "This method was automatically generated." "void glArrayElement(GLint i);" <cdecl: void 'glArrayElement' (long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glArrayElementEXT: i "This method was automatically generated." "void glArrayElementEXT(GLint i);" <cdecl: void 'glArrayElementEXT' (long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glBegin: mode "This method was automatically generated." "void glBegin(GLenum mode);" <cdecl: void 'glBegin' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glBindTexture: targt with: texture "This method was automatically generated." "void glBindTexture(GLenum target, GLuint texture);" <cdecl: void 'glBindTexture' (ulong ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glBitmap: width with: height with: xorig with: yorig with: xmove with: ymove with: bitmap "This method was automatically generated." "void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, GLubyte* bitmap);" <cdecl: void 'glBitmap' (long long float float float float void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glBlendColor: red with: green with: blue with: alpha "This method was automatically generated." "void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);" <cdecl: void 'glBlendColor' (float float float float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glBlendEquation: mode "This method was automatically generated." "void glBlendEquation(GLenum mode);" <cdecl: void 'glBlendEquation' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glBlendFunc: sfactor with: dfactor "This method was automatically generated." "void glBlendFunc(GLenum sfactor, GLenum dfactor);" <cdecl: void 'glBlendFunc' (ulong ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCallList: list "This method was automatically generated." "void glCallList(GLuint list);" <cdecl: void 'glCallList' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCallLists: n with: type with: lists "This method was automatically generated." "void glCallLists(GLsizei n, GLenum type, GLvoid* lists);" <cdecl: void 'glCallLists' (long ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClear: mask "This method was automatically generated." "void glClear(GLbitfield mask);" <cdecl: void 'glClear' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClearAccum: red with: green with: blue with: alpha "This method was automatically generated." "void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);" <cdecl: void 'glClearAccum' (float float float float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClearColor: red with: green with: blue with: alpha "This method was automatically generated." "void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);" <cdecl: void 'glClearColor' (float float float float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClearDepth: depth "This method was automatically generated." "void glClearDepth(GLclampd depth);" <cdecl: void 'glClearDepth' (double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClearIndex: c "This method was automatically generated." "void glClearIndex(GLfloat c);" <cdecl: void 'glClearIndex' (float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClearStencil: s "This method was automatically generated." "void glClearStencil(GLint s);" <cdecl: void 'glClearStencil' (long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClientActiveTextureARB: texture "This method was automatically generated." "void glClientActiveTextureARB(GLenum texture);" <cdecl: void 'glClientActiveTextureARB' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glClipPlane: plane with: equation "This method was automatically generated." "void glClipPlane(GLenum plane, GLdouble* equation);" <cdecl: void 'glClipPlane' (ulong double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3b: red with: green with: blue "This method was automatically generated." "void glColor3b(GLbyte red, GLbyte green, GLbyte blue);" <cdecl: void 'glColor3b' (byte byte byte) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3bv: v "This method was automatically generated." "void glColor3bv(GLbyte* v);" <cdecl: void 'glColor3bv' (byte*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3d: red with: green with: blue "This method was automatically generated." "void glColor3d(GLdouble red, GLdouble green, GLdouble blue);" <cdecl: void 'glColor3d' (double double double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3dv: v "This method was automatically generated." "void glColor3dv(GLdouble* v);" <cdecl: void 'glColor3dv' (double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3f: red with: green with: blue "This method was automatically generated." "void glColor3f(GLfloat red, GLfloat green, GLfloat blue);" <cdecl: void 'glColor3f' (float float float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3fv: v "This method was automatically generated." "void glColor3fv(GLfloat* v);" <cdecl: void 'glColor3fv' (float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3i: red with: green with: blue "This method was automatically generated." "void glColor3i(GLint red, GLint green, GLint blue);" <cdecl: void 'glColor3i' (long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3iv: v "This method was automatically generated." "void glColor3iv(GLint* v);" <cdecl: void 'glColor3iv' (long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3s: red with: green with: blue "This method was automatically generated." "void glColor3s(GLshort red, GLshort green, GLshort blue);" <cdecl: void 'glColor3s' (short short short) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3sv: v "This method was automatically generated." "void glColor3sv(GLshort* v);" <cdecl: void 'glColor3sv' (short*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3ub: red with: green with: blue "This method was automatically generated." "void glColor3ub(GLubyte red, GLubyte green, GLubyte blue);" <cdecl: void 'glColor3ub' (byte byte byte) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3ubv: v "This method was automatically generated." "void glColor3ubv(GLubyte* v);" <cdecl: void 'glColor3ubv' (byte*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3ui: red with: green with: blue "This method was automatically generated." "void glColor3ui(GLuint red, GLuint green, GLuint blue);" <cdecl: void 'glColor3ui' (ulong ulong ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3uiv: v "This method was automatically generated." "void glColor3uiv(GLuint* v);" <cdecl: void 'glColor3uiv' (ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3us: red with: green with: blue "This method was automatically generated." "void glColor3us(GLushort red, GLushort green, GLushort blue);" <cdecl: void 'glColor3us' (ushort ushort ushort) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor3usv: v "This method was automatically generated." "void glColor3usv(GLushort* v);" <cdecl: void 'glColor3usv' (ushort*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4b: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);" <cdecl: void 'glColor4b' (byte byte byte byte) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4bv: v "This method was automatically generated." "void glColor4bv(GLbyte* v);" <cdecl: void 'glColor4bv' (byte*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4d: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);" <cdecl: void 'glColor4d' (double double double double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4dv: v "This method was automatically generated." "void glColor4dv(GLdouble* v);" <cdecl: void 'glColor4dv' (double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4f: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);" <cdecl: void 'glColor4f' (float float float float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4fv: v "This method was automatically generated." "void glColor4fv(GLfloat* v);" <cdecl: void 'glColor4fv' (float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4i: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4i(GLint red, GLint green, GLint blue, GLint alpha);" <cdecl: void 'glColor4i' (long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4iv: v "This method was automatically generated." "void glColor4iv(GLint* v);" <cdecl: void 'glColor4iv' (long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4s: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha);" <cdecl: void 'glColor4s' (short short short short) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4sv: v "This method was automatically generated." "void glColor4sv(GLshort* v);" <cdecl: void 'glColor4sv' (short*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4ub: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);" <cdecl: void 'glColor4ub' (byte byte byte byte) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4ubv: v "This method was automatically generated." "void glColor4ubv(GLubyte* v);" <cdecl: void 'glColo r4ubv' (byte*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4ui: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha);" <cdecl: void 'glColor4ui' (ulong ulong ulong ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4uiv: v "This method was automatically generated." "void glColor4uiv(GLuint* v);" <cdecl: void 'glColor4uiv' (ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4us: red with: green with: blue with: alpha "This method was automatically generated." "void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha);" <cdecl: void 'glColor4us' (ushort ushort ushort ushort) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColor4usv: v "This method was automatically generated." "void glColor4usv(GLushort* v);" <cdecl: void 'glColor4usv' (ushort*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorMask: red with: green with: blue with: alpha "This method was automatically generated." "void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);" <cdecl: void 'glColorMask' (bool bool bool bool) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorMaterial: face with: mode "This method was automatically generated." "void glColorMaterial(GLenum face, GLenum mode);" <cdecl: void 'glColorMaterial' (ulong ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorPointer: size with: type with: stride with: pointer "This method was automatically generated." "void glColorPointer(GLint size, GLenum type, GLsizei stride, GLvoid* pointer);" <cdecl: void 'glColorPointer' (long ulong long void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorPointerEXT: size with: type with: stride with: count with: pointer "This method was automatically generated." "void glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, GLvoid* pointer);" <cdecl: void 'glColorPointerEXT' (long ulong long long void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorSubTable: targt with: start with: count with: format with: type with: data "This method was automatically generated." "void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, GLvoid* data);" <cdecl: void 'glColorSubTable' (ulong long long ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorTable: targt with: internalformat with: width with: format with: type with: table "This method was automatically generated." "void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, GLvoid* table);" <cdecl: void 'glColorTable' (ulong ulong long ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorTableParameterfv: targt with: pname with: params "This method was automatically generated." "void glColorTableParameterfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glColorTableParameterfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glColorTableParameteriv: targt with: pname with: params "This method was automatically generated." "void glColorTableParameteriv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glColorTableParameteriv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glConvolutionFilter1D: targt with: internalformat with: width with: format with: type with: image "This method was automatically generated." "void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, GLvoid* image);" <cdecl: void 'glConvolutionFilter1D' (ulong ulong long ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glConvolutionFilter2D: targt with: internalformat with: width with: height with: format with: type with: image "This method was automatically generated." "void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* image);" <cdecl: void 'glConvolutionFilter2D' (ulong ulong long long ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glConvolutionParameterf: targt with: pname with: params "This method was automatically generated." "void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params);" <cdecl: void 'glConvolutionParameterf' (ulong ulong float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glConvolutionParameterfv: targt with: pname with: params "This method was automatically generated." "void glConvolutionParameterfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glConvolutionParameterfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glConvolutionParameteri: targt with: pname with: params "This method was automatically generated." "void glConvolutionParameteri(GLenum target, GLenum pname, GLint params);" <cdecl: void 'glConvolutionParameteri' (ulong ulong long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glConvolutionParameteriv: targt with: pname with: params "This method was automatically generated." "void glConvolutionParameteriv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glConvolutionParameteriv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyColorSubTable: targt with: start with: x with: y with: width "This method was automatically generated." "void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);" <cdecl: void 'glCopyColorSubTable' (ulong long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyColorTable: targt with: internalformat with: x with: y with: width "This method was automatically generated." "void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);" <cdecl: void 'glCopyColorTable' (ulong ulong long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyConvolutionFilter1D: targt with: internalformat with: x with: y with: width "This method was automatically generated." "void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);" <cdecl: void 'glCopyConvolutionFilter1D' (ulong ulong long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyConvolutionFilter2D: targt with: internalformat with: x with: y with: width with: height "This method was automatically generated." "void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);" <cdecl: void 'glCopyConvolutionFilter2D' (ulong ulong long long long long) m odule: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyPixels: x with: y with: width with: height with: type "This method was automatically generated." "void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);" <cdecl: void 'glCopyPixels' (long long long long ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyTexImage1D: targt with: level with: internalformat with: x with: y with: width with: border "This method was automatically generated." "void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);" <cdecl: void 'glCopyTexImage1D' (ulong long ulong long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyTexImage2D: targt with: level with: internalformat with: x with: y with: width with: height with: border "This method was automatically generated." "void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);" <cdecl: void 'glCopyTexImage2D' (ulong long ulong long long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyTexSubImage1D: targt with: level with: xoffset with: x with: y with: width "This method was automatically generated." "void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);" <cdecl: void 'glCopyTexSubImage1D' (ulong long long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyTexSubImage2D: targt with: level with: xoffset with: yoffset with: x with: y with: width with: height "This method was automatically generated." "void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);" <cdecl: void 'glCopyTexSubImage2D' (ulong long long long long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCopyTexSubImage3D: targt with: level with: xoffset with: yoffset with: zoffset with: x with: y with: width with: height "This method was automatically generated." "void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);" <cdecl: void 'glCopyTexSubImage3D' (ulong long long long long long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glCullFace: mode "This method was automatically generated." "void glCullFace(GLenum mode);" <cdecl: void 'glCullFace' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDeleteLists: list with: range "This method was automatically generated." "void glDeleteLists(GLuint list, GLsizei range);" <cdecl: void 'glDeleteLists' (ulong long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDeleteTextures: n with: textures "This method was automatically generated." "void glDeleteTextures(GLsizei n, GLuint* textures);" <cdecl: void 'glDeleteTextures' (long ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDeleteTexturesEXT: n with: textures "This method was automatically generated." "void glDeleteTexturesEXT(GLsizei n, GLuint* textures);" <cdecl: void 'glDeleteTexturesEXT' (long ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDepthFunc: func "This method was automatically generated." "void glDepthFunc(GLenum func);" <cdecl: void 'glDepthFunc' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDepthMask: flag "This method was automatically generated." "void glDepthMask(GLboolean flag);" <cdecl: void 'glDepthMask' (bool) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDepthRange: zNear with: zFar "This method was automatically generated." "void glDepthRange(GLclampd zNear, GLclampd zFar);" <cdecl: void 'glDepthRange' (double double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDisable: cap "This method was automatically generated." "void glDisable(GLenum cap);" <cdecl: void 'glDisable' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDisableClientState: array "This method was automatically generated." "void glDisableClientState(GLenum array);" <cdecl: void 'glDisableClientState' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDrawArrays: mode with: first with: count "This method was automatically generated." "void glDrawArrays(GLenum mode, GLint first, GLsizei count);" <cdecl: void 'glDrawArrays' (ulong long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDrawArraysEXT: mode with: first with: count "This method was automatically generated." "void glDrawArraysEXT(GLenum mode, GLint first, GLsizei count);" <cdecl: void 'glDrawArraysEXT' (ulong long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDrawBuffer: mode "This method was automatically generated." "void glDrawBuffer(GLenum mode);" <cdecl: void 'glDrawBuffer' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDrawElements: mode with: count with: type with: indices "This method was automatically generated." "void glDrawElements(GLenum mode, GLsizei count, GLenum type, GLvoid* indices);" <cdecl: void 'glDrawElements' (ulong long ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDrawPixels: width with: height with: format with: type with: pixels "This method was automatically generated." "void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);" <cdecl: void 'glDrawPixels' (long long ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glDrawRangeElements: mode with: start with: end with: count with: type with: indices "This method was automatically generated." "void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLvoid* indices);" <cdecl: void 'glDrawRangeElements' (ulong ulong ulong long ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEdgeFlag: flag "This method was automatically generated." "void glEdgeFlag(GLboolean flag);" <cdecl: void 'glEdgeFlag' (bool) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEdgeFlagPointer: stride with: pointer "This method was automatically generated." "void glEdgeFlagPointer(GLsizei stride, GLboolean* pointer);" <cdecl: void 'glEdgeFlagPointer' (long ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEdgeFlagPointerEXT: stride with: count with: pointer "This method was automatically generated." "void glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, GLboolean* pointer);" <cdecl: void 'glEdgeFlagPointerEXT' (long long ulong*) module: 'OpenGL'> ^self externalCallFailed ! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEdgeFlagv: flag "This method was automatically generated." "void glEdgeFlagv(GLboolean* flag);" <cdecl: void 'glEdgeFlagv' (ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEnable: cap "This method was automatically generated." "void glEnable(GLenum cap);" <cdecl: void 'glEnable' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEnableClientState: array "This method was automatically generated." "void glEnableClientState(GLenum array);" <cdecl: void 'glEnableClientState' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEnd "This method was automatically generated." "void glEnd();" <cdecl: void 'glEnd' (void) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEndList "This method was automatically generated." "void glEndList();" <cdecl: void 'glEndList' (void) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord1d: u "This method was automatically generated." "void glEvalCoord1d(GLdouble u);" <cdecl: void 'glEvalCoord1d' (double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord1dv: u "This method was automatically generated." "void glEvalCoord1dv(GLdouble* u);" <cdecl: void 'glEvalCoord1dv' (double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord1f: u "This method was automatically generated." "void glEvalCoord1f(GLfloat u);" <cdecl: void 'glEvalCoord1f' (float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord1fv: u "This method was automatically generated." "void glEvalCoord1fv(GLfloat* u);" <cdecl: void 'glEvalCoord1fv' (float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord2d: u with: v "This method was automatically generated." "void glEvalCoord2d(GLdouble u, GLdouble v);" <cdecl: void 'glEvalCoord2d' (double double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord2dv: u "This method was automatically generated." "void glEvalCoord2dv(GLdouble* u);" <cdecl: void 'glEvalCoord2dv' (double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord2f: u with: v "This method was automatically generated." "void glEvalCoord2f(GLfloat u, GLfloat v);" <cdecl: void 'glEvalCoord2f' (float float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalCoord2fv: u "This method was automatically generated." "void glEvalCoord2fv(GLfloat* u);" <cdecl: void 'glEvalCoord2fv' (float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalMesh1: mode with: i1 with: i2 "This method was automatically generated." "void glEvalMesh1(GLenum mode, GLint i1, GLint i2);" <cdecl: void 'glEvalMesh1' (ulong long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalMesh2: mode with: i1 with: i2 with: j1 with: j2 "This method was automatically generated." "void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);" <cdecl: void 'glEvalMesh2' (ulong long long long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalPoint1: i "This method was automatically generated." "void glEvalPoint1(GLint i);" <cdecl: void 'glEvalPoint1' (long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glEvalPoint2: i with: j "This method was automatically generated." "void glEvalPoint2(GLint i, GLint j);" <cdecl: void 'glEvalPoint2' (long long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFeedbackBuffer: size with: type with: buffer "This method was automatically generated." "void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat* buffer);" <cdecl: void 'glFeedbackBuffer' (long ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFinish "This method was automatically generated." "void glFinish();" <cdecl: void 'glFinish' (void) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFlush "This method was automatically generated." "void glFlush();" <cdecl: void 'glFlush' (void) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFogf: pname with: param "This method was automatically generated." "void glFogf(GLenum pname, GLfloat param);" <cdecl: void 'glFogf' (ulong float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFogfv: pname with: params "This method was automatically generated." "void glFogfv(GLenum pname, GLfloat* params);" <cdecl: void 'glFogfv' (ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFogi: pname with: param "This method was automatically generated." "void glFogi(GLenum pname, GLint param);" <cdecl: void 'glFogi' (ulong long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFogiv: pname with: params "This method was automatically generated." "void glFogiv(GLenum pname, GLint* params);" <cdecl: void 'glFogiv' (ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFrontFace: mode "This method was automatically generated." "void glFrontFace(GLenum mode);" <cdecl: void 'glFrontFace' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glFrustum: left with: right with: bottom with: top with: zNear with: zFar "This method was automatically generated." "void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);" <cdecl: void 'glFrustum' (double double double double double double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/8/2003 00:18'! glGenLists: range "This method was automatically generated." "GLuint glGenLists(GLsizei range);" <cdecl: ulong 'glGenLists' (long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGenTextures: n with: textures "This method was automatically generated." "void glGenTextures(GLsizei n, GLuint* textures);" <cdecl: void 'glGenTextures' (long ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGenTexturesEXT: n with: textures "This method was automatically generated." "void glGenTexturesEXT(GLsizei n, GLuint* textures);" <cdecl: void 'glGenTexturesEXT' (long ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetBooleanv: pname with: params "This method was automatically generated." "void glGetBooleanv(GLenum pname, GLboolean* params);" <cdecl: void 'glGetBooleanv' (ulong ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetClipPlane: plane wi th: equation "This method was automatically generated." "void glGetClipPlane(GLenum plane, GLdouble* equation);" <cdecl: void 'glGetClipPlane' (ulong double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetColorTable: targt with: format with: type with: table "This method was automatically generated." "void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid* table);" <cdecl: void 'glGetColorTable' (ulong ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetColorTableParameterfv: targt with: pname with: params "This method was automatically generated." "void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glGetColorTableParameterfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetColorTableParameteriv: targt with: pname with: params "This method was automatically generated." "void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glGetColorTableParameteriv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetConvolutionFilter: targt with: format with: type with: image "This method was automatically generated." "void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid* image);" <cdecl: void 'glGetConvolutionFilter' (ulong ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetConvolutionParameterfv: targt with: pname with: params "This method was automatically generated." "void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glGetConvolutionParameterfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetConvolutionParameteriv: targt with: pname with: params "This method was automatically generated." "void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glGetConvolutionParameteriv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetDoublev: pname with: params "This method was automatically generated." "void glGetDoublev(GLenum pname, GLdouble* params);" <cdecl: void 'glGetDoublev' (ulong double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetError "This method was automatically generated." "GLenum glGetError();" <cdecl: ulong 'glGetError' (void) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetFloatv: pname with: params "This method was automatically generated." "void glGetFloatv(GLenum pname, GLfloat* params);" <cdecl: void 'glGetFloatv' (ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetHistogram: targt with: reset with: format with: type with: values "This method was automatically generated." "void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid* values);" <cdecl: void 'glGetHistogram' (ulong bool ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetHistogramParameterfv: targt with: pname with: params "This method was automatically generated." "void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glGetHistogramParameterfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetHistogramParameteriv: targt with: pname with: params "This method was automatically generated." "void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glGetHistogramParameteriv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetIntegerv: pname with: params "This method was automatically generated." "void glGetIntegerv(GLenum pname, GLint* params);" <cdecl: void 'glGetIntegerv' (ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetLightfv: light with: pname with: params "This method was automatically generated." "void glGetLightfv(GLenum light, GLenum pname, GLfloat* params);" <cdecl: void 'glGetLightfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetLightiv: light with: pname with: params "This method was automatically generated." "void glGetLightiv(GLenum light, GLenum pname, GLint* params);" <cdecl: void 'glGetLightiv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMapdv: targt with: query with: v "This method was automatically generated." "void glGetMapdv(GLenum target, GLenum query, GLdouble* v);" <cdecl: void 'glGetMapdv' (ulong ulong double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMapfv: targt with: query with: v "This method was automatically generated." "void glGetMapfv(GLenum target, GLenum query, GLfloat* v);" <cdecl: void 'glGetMapfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMapiv: targt with: query with: v "This method was automatically generated." "void glGetMapiv(GLenum target, GLenum query, GLint* v);" <cdecl: void 'glGetMapiv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMaterialfv: face with: pname with: params "This method was automatically generated." "void glGetMaterialfv(GLenum face, GLenum pname, GLfloat* params);" <cdecl: void 'glGetMaterialfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMaterialiv: face with: pname with: params "This method was automatically generated." "void glGetMaterialiv(GLenum face, GLenum pname, GLint* params);" <cdecl: void 'glGetMaterialiv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMinmax: targt with: reset with: format with: type with: values "This method was automatically generated." "void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid* values);" <cdecl: void 'glGetMinmax' (ulong bool ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMinmaxParameterfv: targt with: pname with: params "This method was automatically generated." "void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glGetMinmaxParameterfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetMinmaxParameteriv: targt with: pname with: params "This method was automatically generated." "void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glGetMinmaxParameteriv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetPixelMapfv: map with: values "This method was automatically generated." "void glGetPixelMapfv(GLenum map, GLfloat* values);" <cdecl: void 'glGetPixelMapfv' (ulong f loat*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetPixelMapuiv: map with: values "This method was automatically generated." "void glGetPixelMapuiv(GLenum map, GLuint* values);" <cdecl: void 'glGetPixelMapuiv' (ulong ulong*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetPixelMapusv: map with: values "This method was automatically generated." "void glGetPixelMapusv(GLenum map, GLushort* values);" <cdecl: void 'glGetPixelMapusv' (ulong ushort*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetPointerv: pname with: params "This method was automatically generated." "void glGetPointerv(GLenum pname, GLvoid** params);" <cdecl: void 'glGetPointerv' (ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetPointervEXT: pname with: params "This method was automatically generated." "void glGetPointervEXT(GLenum pname, GLvoid** params);" <cdecl: void 'glGetPointervEXT' (ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetPolygonStipple: mask "This method was automatically generated." "void glGetPolygonStipple(GLubyte* mask);" <cdecl: void 'glGetPolygonStipple' (byte*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetSeparableFilter: targt with: format with: type with: row with: column with: span "This method was automatically generated." "void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid* row, GLvoid* column, GLvoid* span);" <cdecl: void 'glGetSeparableFilter' (ulong ulong ulong void* void* void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetString: name "This method was automatically generated." "GLubyte* glGetString(GLenum name);" <cdecl: byte* 'glGetString' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexEnvfv: targt with: pname with: params "This method was automatically generated." "void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glGetTexEnvfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexEnviv: targt with: pname with: params "This method was automatically generated." "void glGetTexEnviv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glGetTexEnviv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexGendv: coord with: pname with: params "This method was automatically generated." "void glGetTexGendv(GLenum coord, GLenum pname, GLdouble* params);" <cdecl: void 'glGetTexGendv' (ulong ulong double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexGenfv: coord with: pname with: params "This method was automatically generated." "void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat* params);" <cdecl: void 'glGetTexGenfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexGeniv: coord with: pname with: params "This method was automatically generated." "void glGetTexGeniv(GLenum coord, GLenum pname, GLint* params);" <cdecl: void 'glGetTexGeniv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexImage: targt with: level with: format with: type with: pixels "This method was automatically generated." "void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels);" <cdecl: void 'glGetTexImage' (ulong long ulong ulong void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexLevelParameterfv: targt with: level with: pname with: params "This method was automatically generated." "void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params);" <cdecl: void 'glGetTexLevelParameterfv' (ulong long ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexLevelParameteriv: targt with: level with: pname with: params "This method was automatically generated." "void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params);" <cdecl: void 'glGetTexLevelParameteriv' (ulong long ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexParameterfv: targt with: pname with: params "This method was automatically generated." "void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);" <cdecl: void 'glGetTexParameterfv' (ulong ulong float*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glGetTexParameteriv: targt with: pname with: params "This method was automatically generated." "void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params);" <cdecl: void 'glGetTexParameteriv' (ulong ulong long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glHint: targt with: mode "This method was automatically generated." "void glHint(GLenum target, GLenum mode);" <cdecl: void 'glHint' (ulong ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glHistogram: targt with: width with: internalformat with: sink "This method was automatically generated." "void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);" <cdecl: void 'glHistogram' (ulong long ulong bool) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexMask: mask "This method was automatically generated." "void glIndexMask(GLuint mask);" <cdecl: void 'glIndexMask' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexPointer: type with: stride with: pointer "This method was automatically generated." "void glIndexPointer(GLenum type, GLsizei stride, GLvoid* pointer);" <cdecl: void 'glIndexPointer' (ulong long void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexPointerEXT: type with: stride with: count with: pointer "This method was automatically generated." "void glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, GLvoid* pointer);" <cdecl: void 'glIndexPointerEXT' (ulong long long void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexd: c "This method was automatically generated." "void glIndexd(GLdouble c);" <cdecl: void 'glIndexd' (double) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexdv: c "This method was automatically generated." "void glIndexdv(GLdouble* c);" <cdecl: void 'glIndexdv' (double*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexf: c "This method was automatically generated." "void glIndexf(GLfloat c);" <cdecl: void 'glIndexf' (float) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexfv: c "This method was automatically generated." "void glIndexfv(GLfloat* c);" <cdecl: void 'glIndexfv' (float*) module: ' OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexi: c "This method was automatically generated." "void glIndexi(GLint c);" <cdecl: void 'glIndexi' (long) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexiv: c "This method was automatically generated." "void glIndexiv(GLint* c);" <cdecl: void 'glIndexiv' (long*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexs: c "This method was automatically generated." "void glIndexs(GLshort c);" <cdecl: void 'glIndexs' (short) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexsv: c "This method was automatically generated." "void glIndexsv(GLshort* c);" <cdecl: void 'glIndexsv' (short*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexub: c "This method was automatically generated." "void glIndexub(GLubyte c);" <cdecl: void 'glIndexub' (byte) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIndexubv: c "This method was automatically generated." "void glIndexubv(GLubyte* c);" <cdecl: void 'glIndexubv' (byte*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glInitNames "This method was automatically generated." "void glInitNames();" <cdecl: void 'glInitNames' (void) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glInterleavedArrays: format with: stride with: pointer "This method was automatically generated." "void glInterleavedArrays(GLenum format, GLsizei stride, GLvoid* pointer);" <cdecl: void 'glInterleavedArrays' (ulong long void*) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIsEnabled: cap "This method was automatically generated." "GLboolean glIsEnabled(GLenum cap);" <cdecl: bool 'glIsEnabled' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIsList: list "This method was automatically generated." "GLboolean glIsList(GLuint list);" <cdecl: bool 'glIsList' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIsTexture: texture "This method was automatically generated." "GLboolean glIsTexture(GLuint texture);" <cdecl: bool 'glIsTexture' (ulong) module: 'OpenGL'> ^self externalCallFailed! ! !GLXUnixQuartz methodsFor: 'OpenGL API' stamp: 'ikp 1/7/2003 21:14'! glIsTextureEXT: texture "This method was automatically generated." "GLboolean glIsTextureEXT(GLuint texture);" <cdecl: bool 'glIsTextureEXT' (ulong) module: 'OpenGL'> ^self ... [truncated message content] |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:42:33
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz
In directory sc8-pr-cvs1:/tmp/cvs-serv27896
Added Files:
CPS.h Info.plist.in Makefile.in Makefile.inc PkgInfo Squeak.h
Squeak.m SqueakView.h SqueakView.m SqueakWindow.h
SqueakWindow.m acinclude.m4 mkinfo sqUnixQuartz.m
sqUnixQuartzGL.h
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: CPS.h ---
// CPS.h -- generously provided by Bob Ippolito (bo...@re...)
#pragma once
#include <Carbon/Carbon.h>
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
#endif
struct CPSProcessSerNum
{
UInt32 lo;
UInt32 hi;
};
typedef struct CPSProcessSerNum CPSProcessSerNum;
enum
{
kCPSNoProcess = 0,
kCPSSystemProcess = 1,
kCPSCurrentProcess = 2
};
enum
{
bfCPSIntraProcessSwitch = 1,
bfCPSDeathBySignal = 2
};
typedef UInt16 CPSEventFlags;
enum
{
kCPSBlueApp = 0,
kCPSBlueBox = 1,
kCPSCarbonApp = 2,
kCPSYellowApp = 3,
kCPSUnknownApp = 4
};
typedef UInt32 CPSAppFlavour;
enum
{
kCPSBGOnlyAttr = 1024,
kCPSUIElementAttr = 65536,
kCPSHiddenAttr = 131072,
kCPSNoConnectAttr = 262144,
kCPSFullScreenAttr = 524288,
kCPSClassicReqAttr = 1048576,
kCPSNativeReqAttr = 2097152
};
typedef UInt32 CPSProcAttributes;
struct CPSProcessInfoRec
{
CPSProcessSerNum Parent;
UInt64 LaunchDate;
CPSAppFlavour Flavour;
CPSProcAttributes Attributes;
UInt32 ExecFileType;
UInt32 ExecFileCreator;
UInt32 UnixPID;
};
typedef struct CPSProcessInfoRec CPSProcessInfoRec;
enum
{
kCPSNotifyChildDeath = 1,
kCPSNotifyNewFront = 2,
kCPSNotifyAppBirth = 4,
kCPSNotifyAppDeath = 8,
kCPSNotifyLaunch = 9,
kCPSNotifyServiceReq = 16,
kCPSNotifyAppHidden = 32,
kCPSNotifyAppRevealed = 64,
kCPSNotifyFGEnabled = 128,
kCPSNotifyLaunchStart = 256,
kCPSNotifyAppReady = 512,
kCPSNotifyLaunchFail = 1024,
kCPSNotifyAppDeathExt = 2048,
kCPSNotifyLostKeyFocus = 4096
};
typedef UInt32 CPSNotificationCodes;
enum
{
bfCPSLaunchInhibitDaemon = 128,
bfCPSLaunchDontSwitch = 512,
bfCPSLaunchNoProcAttr = 2048,
bfCPSLaunchAsync = 65536,
bfCPSLaunchStartClassic = 131072,
bfCPSLaunchInClassic = 262144,
bfCPSLaunchInstance = 524288,
bfCPSLaunchAndHide = 1048576,
bfCPSLaunchAndHideOthers = 2097152
};
typedef UInt32 CPSLaunchOptions;
typedef UInt8 *CPSLaunchRefcon;
typedef UInt8 *CPSLaunchData;
enum
{
bfCPSExtLaunchWithData = 2,
bfCPSExtLaunchByParent = 4,
bfCPSExtLaunchAsUidGid = 8
};
typedef UInt32 CPSLaunchPBFields;
struct CPSLaunchPB
{
CPSLaunchPBFields Contents;
CPSLaunchData pData;
UInt32 DataLen;
UInt32 DataTag;
UInt32 RefCon;
CPSProcessSerNum Parent;
UInt32 ChildUID;
UInt32 ChildGID;
};
typedef struct CPSLaunchPB CPSLaunchPB;
enum
{
bfCPSKillHard = 1,
bfCPSKillAllClassicApps = 2
};
typedef UInt32 CPSKillOptions;
enum
{
kCPSLaunchService = 0,
kCPSKillService = 1,
kCPSHideService = 2,
kCPSShowService = 3,
kCPSPrivService = 4,
kCPSExtDeathNoteService = 5
};
typedef UInt32 CPSServiceReqType;
struct CPSLaunchRequest
{
CPSProcessSerNum TargetPSN;
CPSLaunchOptions Options;
CPSProcAttributes ProcAttributes;
UInt8 *pUTF8TargetPath;
UInt32 PathLen;
};
typedef struct CPSLaunchRequest CPSLaunchRequest;
struct CPSKillRequest
{
CPSProcessSerNum TargetPSN;
CPSKillOptions Options;
};
typedef struct CPSKillRequest CPSKillRequest;
struct CPSHideRequest
{
CPSProcessSerNum TargetPSN;
};
typedef struct CPSHideRequest CPSHideRequest;
struct CPSShowRequest
{
CPSProcessSerNum TargetPSN;
};
typedef struct CPSShowRequest CPSShowRequest;
struct CPSExtDeathNotice
{
CPSProcessSerNum DeadPSN;
UInt32 Flags;
UInt8 *pUTF8AppPath;
UInt32 PathLen;
};
typedef struct CPSExtDeathNotice CPSExtDeathNotice;
union CPSRequestDetails
{
CPSLaunchRequest LaunchReq;
CPSKillRequest KillReq;
CPSHideRequest HideReq;
CPSShowRequest ShowReq;
CPSExtDeathNotice DeathNotice;
};
typedef union CPSRequestDetails CPSRequestDetails;
struct CPSServiceRequest
{
CPSServiceReqType Type;
SInt32 ID;
CPSRequestDetails Details;
};
typedef struct CPSServiceRequest CPSServiceRequest;
enum
{
kCPSProcessInterruptKey = 0,
kCPSAppSwitchFwdKey = 1,
kCPSAppSwitchBackKey = 2,
kCPSSessionInterruptKey = 3,
kCPSScreenSaverKey = 4,
kCPSDiskEjectKey = 5,
kCPSSpecialKeyCount = 6
};
typedef SInt32 CPSSpecialKeyID;
extern Boolean CPSEqualProcess( CPSProcessSerNum *psn1, CPSProcessSerNum *psn2);
extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn);
extern OSErr CPSGetFrontProcess( CPSProcessSerNum *psn);
extern OSErr CPSGetNextProcess( CPSProcessSerNum *psn);
extern OSErr CPSGetNextToFrontProcess( CPSProcessSerNum *psn);
extern OSErr CPSGetProcessInfo( CPSProcessSerNum *psn, CPSProcessInfoRec *info, char *path, int maxPathLen, int *len, char *name, int maxNameLen);
extern OSErr CPSPostHideMostReq( CPSProcessSerNum *psn);
extern OSErr CPSPostHideReq( CPSProcessSerNum *psn);
extern OSErr CPSPostKillRequest( CPSProcessSerNum *psn, CPSKillOptions options);
extern OSErr CPSPostShowAllReq( CPSProcessSerNum *psn);
extern OSErr CPSPostShowReq( CPSProcessSerNum *psn);
extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn);
extern OSErr CPSReleaseKeyFocus( CPSProcessSerNum *psn);
extern OSErr CPSStealKeyFocus( CPSProcessSerNum *psn);
extern OSErr CPSSetProcessName ( CPSProcessSerNum *psn, char *processname);
extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#ifdef __cplusplus
}
#endif
--- NEW FILE: Info.plist.in ---
<!-- Info.plist -- bundle info file for Unix Squeak on Mac OS X -*- html -*- -->
<!-- (based on John McIntosh's Info.plist for Carbonised MacSqueak) -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC
"-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key> <string>English</string>
<key>CFBundleInfoDictionaryVersion</key> <string>6.0</string>
<key>CFBundleExecutable</key> <string>squeak</string>
<key>CFBundlePackageType</key> <string>APPL</string>
<key>CFBundleSignature</key> <string>FAST</string>
<key>CFBundleName</key> <string>Squeak</string>
<key>CFBundleVersion</key> <string>@BNDL_VERSION@</string>
<key>CFBundleShortVersionString</key> <string>Squeak @BNDL_VERSION@</string>
<key>CFBundleGetInfoString</key> <string>Squeak @BNDL_VERSION@ http://www.squeak.org </string>
<key>CFBundleIdentifier</key> <string>org.squeak.Squeak</string>
<key>CFBundleIconFile</key> <string>Squeak.icns</string>
<key>CFBundleHelpBookFolder</key> <string>SqueakHelp</string>
<key>CFBundleHelpBookName</key> <string>Squeak Help</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key> <array><string>image</string></array>
<key>CFBundleTypeIconFile</key> <string>SqueakImage.icns</string>
<key>CFBundleTypeName</key> <string>Squeak Image File</string>
<key>CFBundleTypeOSTypes</key> <array><string>STim</string></array>
<key>CFBundleTypeRole</key> <string>Editor</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key> <array><string>changes</string></array>
<key>CFBundleTypeIconFile</key> <string>SqueakChanges.icns</string>
<key>CFBundleTypeName</key> <string>Squeak Changes File</string>
<key>CFBundleTypeOSTypes</key> <array><string>STch</string></array>
<key>CFBundleTypeRole</key> <string>Editor</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key> <array><string>sobj</string></array>
<key>CFBundleTypeIconFile</key> <string>SqueakScript.icns</string>
<key>CFBundleTypeName</key> <string>Squeak Script File</string>
<key>CFBundleTypeOSTypes</key> <array><string>SOBJ</string></array>
<key>CFBundleTypeRole</key> <string>Editor</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key> <array><string>bundle</string></array>
<key>CFBundleTypeIconFile</key> <string>SqueakPlugin.icns</string>
<key>CFBundleTypeName</key> <string>Squeak Plugin</string>
<key>CFBundleTypeOSTypes</key> <array><string>BNDL</string></array>
<key>CFBundleTypeRole</key> <string>Editor</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>JPEG</string>
<key>CFBundleTypeOSTypes</key> <array><string>JPEG</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>TEXT</string>
<key>CFBundleTypeOSTypes</key> <array><string>TEXT</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>ttro</string>
<key>CFBundleTypeOSTypes</key> <array><string>ttro</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string></dict>
<dict>
<key>CFBundleTypeName</key> <string>HTML</string>
<key>CFBundleTypeOSTypes</key> <array><string>HTML</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string></dict>
<dict>
<key>CFBundleTypeName</key> <string>RTF</string>
<key>CFBundleTypeOSTypes</key> <array><string>RTF</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string></dict>
<dict>
<key>CFBundleTypeName</key> <string>TIFF</string>
<key>CFBundleTypeOSTypes</key> <array><string>TIFF</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>PICT</string>
<key>CFBundleTypeOSTypes</key> <array><string>PICT</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>URL </string>
<key>CFBundleTypeOSTypes</key> <array><string>URL</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>ZIP </string>
<key>CFBundleTypeOSTypes</key> <array><string>ZIP</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>zip </string>
<key>CFBundleTypeOSTypes</key> <array><string>zip</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>BINA</string>
<key>CFBundleTypeOSTypes</key> <array><string>BINA</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>GIFf</string>
<key>CFBundleTypeOSTypes</key> <array><string>GIFf</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>PNGf</string>
<key>CFBundleTypeOSTypes</key> <array><string>PNGf</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>MP3 </string>
<key>CFBundleTypeOSTypes</key> <array><string>MP3</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>MP3!</string>
<key>CFBundleTypeOSTypes</key> <array><string>MP3!</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>MP3U</string>
<key>CFBundleTypeOSTypes</key> <array><string>MP3U</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>MPEG</string>
<key>CFBundleTypeOSTypes</key> <array><string>MPEG</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>mp3!</string>
<key>CFBundleTypeOSTypes</key> <array><string>mp3!</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>MPG2</string>
<key>CFBundleTypeOSTypes</key> <array><string>MPG2</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>MPG3</string>
<key>CFBundleTypeOSTypes</key> <array><string>MPG3</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>MPG </string>
<key>CFBundleTypeOSTypes</key> <array><string>MPG</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>Mp3</string>
<key>CFBundleTypeOSTypes</key> <array><string>mp3</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>M3U</string>
<key>CFBundleTypeOSTypes</key> <array><string>M3U</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>SRCS</string>
<key>CFBundleTypeOSTypes</key> <array><string>SRCS</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>Chng</string>
<key>CFBundleTypeOSTypes</key> <array><string>Chng</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key> <string>HPS5</string>
<key>CFBundleTypeOSTypes</key> <array><string>HPS5</string></array>
<key>CFBundleTypeRole</key> <string>Viewer</string>
</dict>
</array>
</dict>
</plist>
--- NEW FILE: Makefile.in ---
# Makefile for Quartz Window System support -*- makefile -*-
#
# Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
# as listed elsewhere in this file.
# All rights reserved.
#
# You are NOT ALLOWED to distribute modified versions of this file
# under its original name. If you want to modify it and then make
# your modifications available publicly, rename the file first.
#
# This file is part of Unix Squeak.
#
# This file 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.
#
# You may use and/or distribute this file ONLY as part of Squeak, under
# the terms of the Squeak License as described in `LICENSE' in the base of
# this distribution, subject to the following additional restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment to the original author(s) (and any
# other contributors mentioned herein) in the product documentation
# would be appreciated but is not required.
#
# 2. You must not distribute (or make publicly available by any
# means) a modified copy of this file unless you first rename it.
#
# 3. This notice must not be removed or altered in any source distribution.
#
# Using (or modifying this file for use) in any context other than Squeak
# changes these copyright conditions. Read the file `COPYING' in the
# directory `platforms/unix/doc' before proceeding with any such use.
#
# Author: ian...@in...
#
# Last edited: 2003-02-23 18:09:56 by piumarta on emilia.inria.fr
[make_cfg]
[make_plg]
TARGET= vm-display-Quartz$a
OBJS= sqUnixQuartz$o
XINCLUDES= [includes] \
-I$(topdir)/platforms/Cross/plugins/B3DAcceleratorPlugin \
-I$(topdir)/platforms/unix/plugins/B3DAcceleratorPlugin
#XCFLAGS= -framework Cocoa -framework OpenGL
PLIBS= -Wl,-framework -Wl,Cocoa \
-Wl,-framework -Wl,OpenGL
$(TARGET) : $(OBJS) Makefile
$(LINK) $(TARGET) $(OBJS) $(PLIBS)
$(RANLIB) $(TARGET)
[make_targets]
DEPS= $(OBJS:$o=.d)
include $(DEPS)
%.d : $(topdir)/platforms/unix/vm-display-Quartz/%.m
$(SHELL) -ec '$(CC) -MM $(CFLAGS) $(INCLUDES) $(XINCLUDES) $< \
| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
[ -s $@ ] || rm -f $@'
%.d : $(topdir)/platforms/unix/vm-display-Quartz/%.c
$(SHELL) -ec '$(CC) -MM $(CFLAGS) $(INCLUDES) $(XINCLUDES) $< \
| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
[ -s $@ ] || rm -f $@'
.force :
--- NEW FILE: Makefile.inc ---
XCPPFLAGS= -I$(topdir)/platforms/Cross/plugins/B3DAcceleratorPlugin \
-I$(topdir)/platforms/unix/plugins/B3DAcceleratorPlugin \
-framework Cocoa -framework OpenGL
PLIBS= -Wl,-framework -Wl,Cocoa \
-Wl,-framework -Wl,OpenGL
--- NEW FILE: PkgInfo ---
APPLFAST
--- NEW FILE: Squeak.h ---
// -*- ObjC -*-
@interface Squeak : NSApplication
- (void) applicationDidFinishLaunching: (NSNotification *)note;
- (void) applicationDidChangeScreenParameters: (NSNotification *)note;
- (void) unhideAllApplications: (id)sender;
- (BOOL) windowShouldClose: (id)sender;
- (void) maybeTerminate: (id)sender;
- (void) terminate: (id)sender;
- (void) performEnableKeys: (id)sender;
- (void) performDisableKeys: (id)sender;
@end
--- NEW FILE: Squeak.m ---
#import <Cocoa/Cocoa.h>
@implementation Squeak
+ (void) initialize
{
NSMutableDictionary *dict;
NSUserDefaults *defaults;
defaults= [NSUserDefaults standardUserDefaults];
dict= [NSMutableDictionary dictionary];
[dict setObject: @"YES" forKey: @"AppleDockIconEnabled"];
[defaults registerDefaults: dict];
}
static char *documentName= 0;
-(BOOL) application: (NSApplication *) theApplication
openFile: (NSString *) filename
{
if (fromFinder)
documentName= strdup([filename cString]);
return YES;
}
-(void) applicationDidFinishLaunching: (NSNotification *)note
{
int fds[2];
// this saves an awful lot of tedious mutex contention (and besides
// is essentially free, since there's no way to avoid writing a
// socket to inform aio of the availability of the event)
#if 0
if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) != 0)
{
perror("socketpair");
exit(1);
}
osXfd= fds[0];
stXfd= fds[1];
#else
if (pipe(fds))
{
perror("pipe");
exit(1);
}
stXfd= fds[0];
osXfd= fds[1];
#endif
aioEnable(stXfd, 0, 0);
aioHandle(stXfd, evtHandler, AIO_RX);
#if (!USE_SPINLOCK)
{
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
# ifndef NDEBUG
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
# endif
if (pthread_mutex_init(&displayMx, &attr))
{
perror("pthread_mutex_init");
exit(1);
}
pthread_mutexattr_destroy(&attr);
}
#endif
if (fromFinder)
{
char *ptr= 0;
strncpy(resourcePath, argVec[0], sizeof(resourcePath)); // .app/Contents/MacOS/squeak
if ((ptr= strrchr(resourcePath, '/')))
{
*ptr= '\0'; // .app/Contents/MacOS
if ((ptr= strrchr(resourcePath, '/')))
{
*ptr= '\0'; // .app/Contents
strcpy(ptr, "/Resources/"); // .app/Contents/Resources/
}
else
resourcePath[0]= '\0';
}
else
resourcePath[0]= '\0';
}
imgInit();
// vmPath has been set to the realpath() of the VM, which might be
// bogus (since the more cultivated OS X user will make it a symlink
// to /usr/local/bin/squeak). put it back where it should be. note
// that we would also like to pick up the sources file from
// resourcePath/SqueakV*.sources, but I guess the stupid image is
// going to look for it in the vmPath. ho hum.
{
char *ptr;
assert(strlen(argVec[0]) < MAXPATHLEN);
strcpy(vmPath, argVec[0]);
if ((ptr= strrchr(vmPath, '/')))
ptr[1]= '\0';
}
setUpDisplay();
printf("fullScreenFlag %d\n", getFullScreenFlag());
setUpWindow(fullscreen= getFullScreenFlag());
[NSThread
detachNewThreadSelector: @selector(interpret:)
toTarget: self
withObject: nil];
}
- (void) interpret: (id)context
{
[[NSAutoreleasePool alloc] init]; // running in new thread
interpret();
(void)recordMouseEvent;
(void)recordKeyboardEvent;
(void)recordDragEvent;
}
- (void) applicationDidChangeScreenParameters: (NSNotification *)note
{
//xxx this one might be tricky in the absence of appWillChangeScreenParams:
fprintf(stderr, "\nDISPLAY PARAMETERS CHANGED\n\n");
// lock(display);
pixWidth= pixHeight= pixDepth= 0;
setUpDisplay();
//setUpWindow(getFullScreenFlag());
updatePix();
// unlock(display);
//setUpMenus();
fullDisplayUpdate();
}
- (void) unhideAllApplications: (id)sender
{
[super unhideAllApplications: sender];
[win orderFront: self]; // so that unhinding once more will reveal the Sq window
}
- (BOOL) windowShouldClose: (id)sender
{
return NO;
}
- (void) terminate: (id)sender
{
[super terminate: sender];
exit(0);
}
- (void) maybeTerminate: (id)sender
{
switch (NSRunAlertPanel(@"Really quit?",
@"All changes since your last save will be lost.\n\nIf you want to save your changes, press `Cancel' and then choose `save and quit' from the background menu in the Squeak window.",
@"Quit",
@"Cancel",
nil))
{
case NSAlertDefaultReturn: [self terminate: self];
}
}
- (void) performAbout: (id)sender
{
extern char *getVersionInfo(int verbose);
char *info= getVersionInfo(1);
NSPanel *panel= NSGetInformationalAlertPanel(@"About Squeak",
@"%s",
@"Dismiss",
nil,
nil,
info);
NSRect frame= [panel frame];
frame.size.width *= 1.5;
[panel setFrame: frame display: NO];
[NSApp runModalForWindow: panel];
[panel close];
free(info);
}
//xxx why does rebuilding the menu lose boldface on the Apple menu item???
- (void) performEnableKeys: (id)sender { cmdKeys= 1; setUpMenus(); }
- (void) performDisableKeys: (id)sender { cmdKeys= 0; setUpMenus(); }
- (void) windowWillMove: (NSNotification *)note
{
//xxx FIXME SOON: there are other ways to enter this (and ways other than
// noteEvent to escape from it)
inModalLoop= 1;
}
- (NSSize) windowWillResize: (NSWindow *)sender toSize: (NSSize)size
{
return glActive ? [sender frame].size : size;
}
- (void) windowDidResize: (NSNotification *)note
{
reframeRenderers();
}
-(void) sendEvent: (NSEvent *)event
{
int type= [event type];
NSPoint loc= [event locationInWindow];
NSWindow *evtWin= [event window];
#if 0
NSPoint loc= (fullscreen
? [NSEvent mouseLocation] //xxx should use deltas
: [event locationInWindow]);
#endif
if (evtWin && ((NSWindow *)win != [event window]))
{
[super sendEvent: event];
return;
}
switch (type)
{
# define down buttonState |= qz2sqButton([event buttonNumber])
# define move
# define up buttonState &= ~qz2sqButton([event buttonNumber])
# define recordEvent(delta) \
if (fullscreen || NSPointInRect(loc, [view frame])) \
{ \
noteMousePoint(loc); \
delta; \
modifierState= qz2sqModifiers([event modifierFlags]); \
noteMouseEvent(); \
} \
else \
[super sendEvent: event] // don't track outside window
case NSLeftMouseDown: case NSOtherMouseDown: case NSRightMouseDown:
if ((!active) || NSPointInRect(loc, resizeRect))
[super sendEvent: event]; // first click, or start resize
else
recordEvent(down);
break;
case NSLeftMouseDragged: case NSRightMouseDragged: case NSOtherMouseDragged:
if (!(buttonState & qz2sqButton([event buttonNumber])))
{
[super sendEvent: event]; // already tracking window move
break;
}
// fall through...
case NSMouseMoved:
recordEvent(move);
break;
case NSLeftMouseUp: case NSOtherMouseUp: case NSRightMouseUp:
recordEvent(up);
break;
# undef recordEvent
# undef down
# undef move
# undef up
case NSKeyDown:
{
int keyCode;
modifierState= qz2sqModifiers([event modifierFlags]);
keyCode= [view composeKeyDown: event]; //qz2sqKey(event);
if (keyCode >= 0)
{
if (cmdKeys)
{
if ((modifierState == CommandKeyBit) || (modifierState == CommandKeyBit + ShiftKeyBit))
switch (keyCode)
{
case '?': [NSApp showHelp: self]; keyCode= -1; break;
case 'h': [NSApp hide: self]; keyCode= -1; break;
case 'k': [NSApp performDisableKeys: self]; keyCode= -1; break;
case 'm': [win performMiniaturize: self]; keyCode= -1; break;
case 'q': [NSApp maybeTerminate: self]; keyCode= -1; break;
}
else if (modifierState == CommandKeyBit + OptionKeyBit)
switch (keyCode)
{
case 'h': [NSApp hideOtherApplications: self]; keyCode= -1; break;
}
}
if (keyCode >= 0)
{
if (![event isARepeat])
noteKeyboardEvent(keyCode, EventKeyDown, modifierState);
noteKeyboardEvent(keyCode, EventKeyChar, modifierState);
recordKeystroke(keyCode); /* DEPRECATED */
}
else // key up not interesting
[view composeKeyUp: event];
}
}
break;
case NSKeyUp:
{
int keyCode;
modifierState= qz2sqModifiers([event modifierFlags]);
keyCode= [view composeKeyUp: event]; //qz2sqKey(event);
if (keyCode >= 0)
{
noteKeyboardEvent(keyCode, EventKeyUp, modifierState);
//accentMap= 0;
}
}
break;
case NSScrollWheel:
{
int keyCode= ([event deltaY] >= 0.0) ? 30 : 31;
noteKeyboardEvent(keyCode, EventKeyDown, modifierState);
noteKeyboardEvent(keyCode, EventKeyChar, modifierState);
noteKeyboardEvent(keyCode, EventKeyUp, modifierState);
}
break;
case NSAppKitDefined:
switch ([event subtype])
{
case NSApplicationActivatedEventType:
active= 1;
break;
case NSApplicationDeactivatedEventType:
active= 0;
break;
// case NSScreenChangedEventType: //xxx this means the window
// changed to a different physical screen, which is useless
// info (we'd far rather be informed that the current screen's
// depth has changed)
}
//dprintf(("AppKitDefinedEvent subtype %d\n", [event subtype]));
[super sendEvent: event];
break;
// case NSFlagsChanged:
// case NSApplicationDefined: break;
// case NSPeriodic: break;
// case NSCursorUpdate: break;
default: // almost always NSSystemDefined
//dprintf(("Event type %d subtype %d\n", [event type], [event subtype]));
[super sendEvent: event];
}
}
@end // Squeak
--- NEW FILE: SqueakView.h ---
// -*- ObjC -*-
// Why QDView? Well...
//
// 1) we can trivially obtain a raw pointer to its backing store, so
// 2) no need to putz around with the lockFocus/DataProvider/ImageRep crap; plus
// 3) its buffer's coordinate system is already the right way up for Squeak, so
// 4) we avoid potential recopy (just to have CG recopy again); besides
// 5) QDFlushBuffer is _blindingly_ fast (even compared to drawing directly on
// the framebuffer [go measure it if you don't believe me]); but most importantly
// 6) the QD API is completely free of ObjC and attendant inefficiencies.
@interface SqueakView : NSQuickDrawView <NSTextInput>
- (BOOL) acceptsFirstResponder;
- (BOOL) becomeFirstResponder;
- (BOOL) isOpaque;
- (BOOL) isFlipped;
- (id) initWithFrame: (NSRect)frame;
- (void) setFrame: (NSRect)rect;
- (void) drawRect: (NSRect)rect;
- (void) viewWillStartLiveResize;
- (void) viewDidEndLiveResize;
- (int) draggingEntered: (id<NSDraggingInfo>)sender;
- (int) draggingUpdated: (id<NSDraggingInfo>)sender;
- (void) draggingExited: (id<NSDraggingInfo>)sender;
- (BOOL) performDragOperation: (id<NSDraggingInfo>)sender;
- (int) composeKeyDown: (NSEvent *)event;
- (int) composeKeyUp: (NSEvent *)event;
@end
--- NEW FILE: SqueakView.m ---
@implementation SqueakView
- (BOOL) isOpaque { return YES; }
- (BOOL) isFlipped { return YES; }
- (BOOL) acceptsFirstResponder { return YES; }
- (BOOL) becomeFirstResponder { return YES; }
- (BOOL) resignFirstResponder { return NO; }
- (void) renewGState
{
printf("\nRENEW GSTATE\n\n");
[super renewGState];
}
static NSRange inputMark;
static NSRange inputSelection;
static int inputCharCode;
- (id) initWithFrame: (NSRect)frame
{
id result= [super initWithFrame: frame];
if (self == result)
[self registerForDraggedTypes:
[NSArray arrayWithObjects:
NSFilenamesPboardType, nil]];
inputCharCode= -1;
inputMark= NSMakeRange(NSNotFound, 0);
inputSelection= NSMakeRange(0, 0);
return result;
}
- (void) setFrame: (NSRect)rect
{
lock(display);
[super setFrame: rect];
if ([self inLiveResize])
{
# if (RESIZE_IN_TITLE)
display_winSetName(shortImageName);
# endif
}
else
if ([self qdPort])
updatePix();
unlock(display);
}
- (void) drawRect: (NSRect)rect // view already has focus
{
printf("drawRect:\n");
if ([self inLiveResize])
{
[[NSColor whiteColor] set];
NSRectFill(rect);
drawImage([[NSGraphicsContext currentContext] graphicsPort], 0);
}
else
{
if (!pixBase)
{
printf("drawRect: calling updatePix\n");
assert([self qdPort]);
updatePix();
}
fullDisplayUpdate();
}
}
- (void) viewWillStartLiveResize
{
captureImage(1);
[win setShowsResizeIndicator: YES];
#if (RESIZE_IN_TITLE)
showExtent= 1;
display_winSetName(shortImageName);
#endif
pixWidth= 0;
pixHeight= 0;
}
- (void) viewDidEndLiveResize
{
releaseImage(1);
[win setShowsResizeIndicator: NO];
#if (RESIZE_IN_TITLE)
showExtent= 0;
display_winSetName(shortImageName);
#endif
updatePix();
fullDisplayUpdate(); // gets rid of the resize icon if window didn't resize
}
- (int) draggingEntered: (id<NSDraggingInfo>)info
{
if ((dragCount == 0) // cannot drag again until previous drag completes
&& ([info draggingSourceOperationMask] & NSDragOperationCopy))
{
int count= [[[info draggingPasteboard]
propertyListForType: NSFilenamesPboardType] count];
noteMousePoint([info draggingLocation]);
noteDragEvent(DragEnter, dragCount= count);
return NSDragOperationCopy;
}
return NSDragOperationNone;
}
- (int) draggingUpdated: (id<NSDraggingInfo>)info
{
noteMousePoint([info draggingLocation]);
noteDragEvent(DragMove, dragCount);
return NSDragOperationCopy;
}
- (void) draggingExited: (id<NSDraggingInfo>)info
{
noteMousePoint([info draggingLocation]);
noteDragEvent(DragLeave, dragCount);
dragCount= 0;
}
- (BOOL) performDragOperation: (id<NSDraggingInfo>)info
{
NSPasteboard *pboard= [info draggingPasteboard];
noteMousePoint([info draggingLocation]);
if ([[pboard types] containsObject: NSFilenamesPboardType])
{
NSArray *files= [pboard propertyListForType: NSFilenamesPboardType];
int i;
if (uxDropFileCount)
{
assert(uxDropFileNames);
for (i= 0; i < uxDropFileCount; ++i)
free(uxDropFileNames[i]);
free(uxDropFileNames);
uxDropFileNames= 0;
}
if (( (!(uxDropFileCount= [files count])))
|| (!(uxDropFileNames= (char **)malloc(uxDropFileCount * sizeof(char *)))))
{
uxDropFileCount= 0;
return NO;
}
for (i= 0; i < uxDropFileCount; ++i)
uxDropFileNames[i]= strdup([[files objectAtIndex: i] cString]);
}
noteDragEvent(DragDrop, uxDropFileCount);
dragCount= 0;
return YES; // under some duress, I might add (see sqUxDragDrop.c)
}
enum { KeyMapSize= 32 };
typedef struct
{
int keyCode;
int keyChar;
} KeyMapping;
static KeyMapping keyMap[KeyMapSize];
static int keyMapSize= 0;
static int inputCharCode= -1;
static int addToKeyMap(int keyCode, int keyChar)
{
if (keyMapSize > KeyMapSize) { fprintf(stderr, "keymap overflow\n"); return -1; }
keyMap[keyMapSize++]= (KeyMapping){ keyCode, keyChar };
return keyChar;
}
static int indexInKeyMap(int keyCode)
{
int i;
for (i= 0; i < keyMapSize; ++i)
if (keyMap[i].keyCode == keyCode)
return i;
return -1;
}
static int findInKeyMap(int keyCode)
{
int idx= indexInKeyMap(keyCode);
return (idx >= 0) ? keyMap[idx].keyChar : -1;
}
static int removeFromKeyMap(int keyCode)
{
int idx= indexInKeyMap(keyCode);
int keyChar= -1;
if (idx < 0) { fprintf(stderr, "keymap underflow\n"); return -1; }
keyChar= keyMap[idx].keyChar;
for (; idx < keyMapSize - 1; ++idx)
keyMap[idx]= keyMap[idx + 1];
--keyMapSize;
return keyChar;
}
// the following (to @end) must be installed in the first responder
- (int) composeKeyDown: (NSEvent *)event
{
int keyCode= [event keyCode];
inputCharCode= -1;
if (modifierState & CommandKeyBit)
inputCharCode= qz2sqKey(event);
else
{
if ([event isARepeat])
{
int keyChar= findInKeyMap(keyCode);
//printf("%d REP keyCode %x -> keyChar %x\n", keyMapSize, keyCode, keyChar);
return keyChar;
}
else
{
[self interpretKeyEvents: [NSArray arrayWithObject: event]];
if (inputCharCode < 0)
inputCharCode= qz2sqKey(event);
}
}
if (inputCharCode >= 0)
{
//printf("%d ADD keyCode %x -> keyChar %x\n", keyMapSize, keyCode, inputCharCode);
addToKeyMap(keyCode, inputCharCode);
}
return inputCharCode;
}
- (int) composeKeyUp: (NSEvent *)event
{
int keyCode= [event keyCode];
int keyChar= removeFromKeyMap(keyCode);
//printf("%d DEL keyCode %x -> charCode %x\n", keyMapSize, keyCode, keyChar);
return keyChar;
}
- (void) insertText: (NSString *)text
{
//printf("insertText\n");
inputMark= NSMakeRange(NSNotFound, 0);
inputSelection= NSMakeRange(0, 0);
if ([text length])
{
UInt8 buf[4];
CFIndex nUsed;
if (CFStringGetBytes((CFStringRef)text, CFRangeMake(0, CFStringGetLength((CFStringRef)text)),
kCFStringEncodingMacRoman, 0, FALSE,
buf, sizeof(buf), &nUsed))
inputCharCode= buf[0];
}
}
// ParagraphEditor's map looks like this:
//
// 0 noop cursorHome noop noop cursorEnd noop noop noop
// 8 backspace noop noop cursorPageUp cursorPageDown crWithIndent noop noop
// 16 noop noop noop noop noop noop noop noop
// 24 noop noop noop offerMenuFromEsc cursorLeft cursorRight cursorUp cursorDown
// 127 forwardDelete
- (void) doCommandBySelector: (SEL)aSelector
{
// why doesn't @selector() reduce to a constant??
# define encode(c, s) if (aSelector == @selector(s)) inputCharCode= c
// my (subjective) approximation of usage frequency...
encode( 8, deleteBackward:);
else encode( 13, insertNewline:);
else encode( 9, insertTab:);
else encode( 28, moveLeft:);
else encode( 29, moveRight:);
else encode( 30, moveUp:);
else encode( 31, moveDown:);
else encode( 11, pageUp:);
else encode( 12, pageDown:);
else encode( 1, moveToBeginningOfDocument:);
else encode( 4, moveToEndOfDocument:);
else encode(127, deleteForward:);
else encode( 27, _cancelKey:);
else
printf("doCommandBySelector: %s\n", sel_getName(aSelector));
# undef encode
}
- (void) setMarkedText: (id)aString selectedRange: (NSRange)selRange
{
inputMark= NSMakeRange(0, 1);
inputSelection= NSMakeRange(NSNotFound, 0);
}
- (void) unmarkText { inputMark= NSMakeRange(NSNotFound, 0); }
- (BOOL) hasMarkedText { return inputMark.location != NSNotFound; }
- (long) conversationIdentifier { return (long)self; }
- (NSAttributedString *) attributedSubstringFromRange: (NSRange)theRange { return nil; }
- (NSRange) markedRange { return inputMark; }
- (NSRange) selectedRange { return inputSelection; }
- (NSRect) firstRectForCharacterRange: (NSRange)theRange { return NSMakeRect(0,0, 0,0); }
- (unsigned int) characterIndexForPoint: (NSPoint)thePoint { return 0; }
- (NSArray *) validAttributesForMarkedText { return nil; }
@end
--- NEW FILE: SqueakWindow.h ---
// -*- ObjC -*-
@interface SqueakWindow : NSWindow
{
NSImage *icon;
}
- (BOOL) isOpaque;
- (BOOL) canBecomeKeyWindow;
- (void) setIcon;
- (void) performMiniaturize: (id)sender;
- (void) miniaturize: (id)sender;
@end
--- NEW FILE: SqueakWindow.m ---
@implementation SqueakWindow
- (BOOL) isOpaque { return YES; }
- (BOOL) canBecomeKeyWindow { return YES; }
- (void) setIcon
{
/////////////xxxxxxxxxxxxxxxxxxxxxxxxxx REMOVE
icon= [[NSImage alloc] initWithContentsOfFile: @"transp.icns"];
if (icon)
[NSApp setApplicationIconImage: icon];
}
- (NSImage *) dockImage
{
NSBitmapImageRep *rep= [NSBitmapImageRep alloc];
if ([rep initWithFocusedViewRect: topRect])
{
NSImage *image= [[NSImage alloc] init];
[image addRepresentation: rep];
if (icon)
{
[image lockFocus];
[icon drawInRect: NSMakeRect(0, 0, [image size].width, [image size].height)
fromRect: NSMakeRect(0, 0, [icon size].width, [icon size].height)
operation: NSCompositeSourceOver
fraction: 1.0];
[image unlockFocus];
}
return image;
}
return nil;
}
- (void) performMiniaturize: (id)sender
{
if (!glActive)
[super performMiniaturize: sender];
}
- (void) miniaturize: (id)sender
{
NSImage *image= [self dockImage];
if (image)
[self setMiniwindowImage: image];
[image release];
[super miniaturize: sender];
}
@end
--- NEW FILE: acinclude.m4 ---
# -*- sh -*-
AC_ARG_WITH(quartz,
[ --without-quartz disable MacOSX Window System support [default=enabled]],
[have_quartz="$withval"],
[have_quartz="yes"])
case $host_os in
darwin*) ;;
*) have_quartz="no";;
esac
if test "$have_quartz" = "yes"; then
AC_DEFINE(USE_QUARTZ, [1])
if test "$have_gl" = ""; then have_gl="no"; fi
AC_CHECK_HEADERS(OpenGL/gl.h, [
have_gl=yes
AC_DEFINE(USE_QUARTZ_CGL, [1])
])
else
AC_PLUGIN_DISABLE
fi
--- NEW FILE: mkinfo ---
#!/bin/sh
IN=$1; shift
OUT=$1; shift
BNDL_VERSION="$@"
sed "s%\@BNDL_VERSION@%${BNDL_VERSION}%g" < ${IN} > ${OUT}
--- NEW FILE: sqUnixQuartz.m ---
/* sqUnixQuartz.m -- display via native windows on Mac OS X -*- ObjC -*-
*
* Author: Ian Piumarta <ian...@in...>
*
* Copyright (C) 1996-2002 Ian Piumarta and other authors/contributors
* as listed elsewhere in this file.
* All rights reserved.
*
* You are NOT ALLOWED to distribute modified versions of this file
* under its original name. If you want to modify it and then make
* your modifications available publicly, rename the file first.
*
* This file is part of Unix Squeak.
*
* This file 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.
*
* You may use and/or distribute this file ONLY as part of Squeak, under
[...2703 lines suppressed...]
assert(r->context);
frame.origin.y= [topView bounds].size.height - frame.size.height - frame.origin.y;
fprintf(stderr, "view setFrame: %d %d %d %d\n",
(int)frame.origin.x, (int)frame.origin.y, (int)frame.size.width, (int)frame.size.height);
[renderView(r) setFrame: frame];
}
SqDisplayDefine(Quartz);
#include "SqModule.h"
static void *display_makeInterface(void)
{
return &display_Quartz_itf;
}
SqModuleDefine(display, Quartz);
--- NEW FILE: sqUnixQuartzGL.h ---
#if (DEBUG)
static long getFormatAttribute(NSOpenGLPixelFormat *fmt,
NSOpenGLPixelFormatAttribute attr)
{
long val;
[fmt getValues: &val forAttribute: attr forVirtualScreen: 0];
return val;
}
void printFormatInfo(NSOpenGLPixelFormat *fmt)
{
printf("GL pixel format:\n");
// valued
printf(" RendererID 0x%lx\n", getFormatAttribute(fmt, NSOpenGLPFARendererID ));
printf(" AuxBuffers %ld\n", getFormatAttribute(fmt, NSOpenGLPFAAuxBuffers ));
printf(" ColorSize %ld\n", getFormatAttribute(fmt, NSOpenGLPFAColorSize ));
printf(" AlphaSize %ld\n", getFormatAttribute(fmt, NSOpenGLPFAAlphaSize ));
printf(" DepthSize %ld\n", getFormatAttribute(fmt, NSOpenGLPFADepthSize ));
printf(" StencilSize %ld\n", getFormatAttribute(fmt, NSOpenGLPFAStencilSize));
printf(" AccumSize %ld\n", getFormatAttribute(fmt, NSOpenGLPFAAccumSize ));
printf(" ScreenMask %ld\n", getFormatAttribute(fmt, NSOpenGLPFAScreenMask ));
// bool
printf(" AllRenderers %ld\n", getFormatAttribute(fmt, NSOpenGLPFAAllRenderers ));
printf(" Stereo %ld\n", getFormatAttribute(fmt, NSOpenGLPFAStereo ));
printf(" MinimumPolicy %ld\n", getFormatAttribute(fmt, NSOpenGLPFAMinimumPolicy ));
printf(" MaximumPolicy %ld\n", getFormatAttribute(fmt, NSOpenGLPFAMaximumPolicy ));
printf(" OffScreen %ld\n", getFormatAttribute(fmt, NSOpenGLPFAOffScreen ));
printf(" FullScreen %ld\n", getFormatAttribute(fmt, NSOpenGLPFAFullScreen ));
printf(" SingleRenderer %ld\n", getFormatAttribute(fmt, NSOpenGLPFASingleRenderer));
printf(" NoRecovery %ld\n", getFormatAttribute(fmt, NSOpenGLPFANoRecovery ));
printf(" Accelerated %ld\n", getFormatAttribute(fmt, NSOpenGLPFAAccelerated ));
printf(" ClosestPolicy %ld\n", getFormatAttribute(fmt, NSOpenGLPFAClosestPolicy ));
printf(" Robust %ld\n", getFormatAttribute(fmt, NSOpenGLPFARobust ));
printf(" BackingStore %ld\n", getFormatAttribute(fmt, NSOpenGLPFABackingStore ));
printf(" Window %ld\n", getFormatAttribute(fmt, NSOpenGLPFAWindow ));
printf(" MultiScreen %ld\n", getFormatAttribute(fmt, NSOpenGLPFAMultiScreen ));
printf(" Compliant %ld\n", getFormatAttribute(fmt, NSOpenGLPFACompliant ));
}
static long getCtxParam(NSOpenGLContext *ctx, NSOpenGLContextParameter param)
{
long val;
[ctx getValues: &val forParameter: param];
return val;
}
void printContextInfo(NSOpenGLContext *ctx)
{
long vals[4];
printf("GL Context Parameters:\n");
[ctx getValues: vals forParameter: NSOpenGLCPSwapRectangle];
printf(" SwapRectangle %ld,%ld %ldx%ld\n", vals[0], vals[1], vals[2], vals[3]);
printf(" SwapRectangleEnable %ld\n", getCtxParam(ctx, NSOpenGLCPSwapRectangleEnable));
printf(" RasterizationEnable %ld\n", getCtxParam(ctx, NSOpenGLCPRasterizationEnable));
printf(" SwapInterval %ld\n", getCtxParam(ctx, NSOpenGLCPSwapInterval));
printf(" SurfaceOrder %ld\n", getCtxParam(ctx, NSOpenGLCPSurfaceOrder));
printf(" SurfaceOpacity %ld\n", getCtxParam(ctx, NSOpenGLCPSurfaceOpacity));
printf(" StateValidation %ld\n", getCtxParam(ctx, NSOpenGLCPStateValidation));
}
#else /* !DEBUG */
# define printFormatInfo(fmt)
# define printContextInfo(ctx)
#endif
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:42:33
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources/SqueakHelp
In directory sc8-pr-cvs1:/tmp/cvs-serv27896/Resources/SqueakHelp
Added Files:
SqueakHelp.html
Log Message:
Ian Piumarta's release 3.5-1devel
--- NEW FILE: SqueakHelp.html ---
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html">
<title>Squeak Help</title>
<meta name="DP" content="1.9.1/3.1.1">
<meta name="AppleTitle" content="Squeak Help">
<meta name="AppleIcon" content="SqueakHelp/images/bookicon.gif">
<meta name="ROBOTS" content="NOINDEX">
</head>
<body bgcolor="#ffffff" link="#cc6600" alink="#aa3a00" vlink="#aa3300">
<font face="Geneva,Arial">
<center><font size="+3">
Welcome to Unix Squeak! <br> (Mac OS X edition)
</font></center>
<h1> Introduction </h1>
This software is still very much in <font color="red">alpha test</font>.
This means that it will crash (frequently) at random times for no obvious
reason. By continuing to use this software you agree implicitly to act as
an alpha tester and hence to the following:
<blockquote>
Subsequent to any and all crashes you will send the contents of the file
<tt>Library/Logs/CrashReporter/squeak.crash.log</tt> (relative to your
home directory), along with a brief description of what you were doing at
the time, by email to: <tt>ian...@in...</tt> (If you can
also concoct a recipe to reproduce the crash reliably then you'll
[probably] win a faster resolution of the problem.)
</blockquote>
<h1> Starting Squeak </h1>
Squeak can be started either from the Finder (by double-clicking on the VM
or an image file) or from the command line in a terminal window. If it is
started from the command line then various features (that are not available
when launching it from the Finder) become available through command line
options, such as running without a window (useful if the application is a
Swiki or some other kind of server, for example). (Some of these options
will soon be available via a preferences panel in Quartz, when I get round
to implementing it.) A list of the available options is available by
running Squeak from the command line and giving it the option `<tt>-help</tt>'.
<p> If X11 is installed then display can be via X11 or via Quartz. The
default is X11 if the environment variable DISPLAY is set and Quartz if
Squeak is launched from the Finder. To force one or the other, Squeak can
be run from the command line with the option `<tt>-quartz</tt>' or
`<tt>-display <your-display></tt>' as desired.
<p> Note that to run Squeak in a remote window the X11 libraries must be
installed on the client machine, i.e., the one on which Squeak is running.
(More accurately, Squeak requires at least <tt>libX11</tt>
and <tt>libXext</tt> installed for it to be able to connect to a remote
display server).
<p> Note also that options relating to the display are only
recognised <i>after</i> Squeak has been told which kind of display is to be
used. This applies even to the `<tt>-help</tt>' option. For example, to
see a list of options that includes those specific to Quartz, Squeak must be
run with the options `<tt>-quartz -help</tt>', <b>in that order</b>.
<h1> Providing a default image </h1>
When launched from the Finder, if Squeak cannot find a default image to run
in the current directory then it looks for the files <tt>squeak.image</tt>
and <tt>squeak.changes</tt> in the <tt>Squeak.app/Contents/Resources</tt>
directory. If these files exist then Squeak will offer to copy them (with a
dialogue to choose the destination) before launching. (If these files do
not exist and there is no obvious default image to run in the current
directory, then double-clicking the VM will enter an `open' dialogue to
locate an existing image to use.)
<h1> Known bugs, limitiations and quirks </h1>
<ul>
<li> Croquet requires some new support code (containing GLX classes
appropriate for Quartz and big-endian X11). If these haven't been
filed-in then Croquet probably won't work. (Forgetfulness on my part
not withstanding, a copy of the required changeset should be in
the <tt>Squeak.app/Contents/Resources</tt> directory, for
convenience.) </li>
<li> The Squeak window will refuse to resize if there are any TeapotMorphs
open. This is to avoid a very nasty bug (that freezes the entire
machine) in Mac OS X, which cannot cope with the VM thread updating
OpenGL content while the (separate) UI thread is trying to invalidate
the corresponding graphics state during window resizing. (Switching
to/from fullscreen mode with open TeapotMorphs does work
properly.) </li>
<li> Croquet might run slower than normal since there is no MatrixPlugin
included with Unix Squeak. The plugin is not included since I do not
have (nor can I find anywhere) the sources for it. </li>
<li> In order to support Croquet under Mac OS X (which has no way to
associate a default memory size with an application) Squeak will
determine how much virtual memory is available (up to a maximum of 1
gigabyte) and reserve that amount for dynamically growing the object
memory. (This memory will only be <i>physically</i> allocated
if/when the image tries to grow disproportionately, so this behaviour
shouldn't rattle the disk under normal circumstances.) </li>
<li> To display Croquet in an X11 window it is currently necessary to set
the environment
variable <tt>LD_LIBRARY_PATH=/usr/X11R6/lib:/usr/lib:/lib</tt> before
starting the VM. (This is necessary because of a bug in the Mac OS X
dynamic linker, although a subsequent version of Unix Squeak might
elect to cure this problem by brute force inside the VM.)
<li> There must be a SqueakV3.sources file (or a link/alias to one) in the
same directory as the image. There is currently no start-up dialogue
to locate a sources file in an alternate location. (This is fairly
high on the to-do list. If it becomes a nuisance then placing a
copy/link/alias of/to the sources file in
the <tt>Squeak.app/Contents/MacOS</tt> directory will probably do the
trick.) </li>
<li> Command-tab (fullscreen switch) does not work. There appears to be
no way in Mac OS X to intercept the corresponding key event before
it's snarfed by the dock (to cycle the key window between the
currently active applications). </li>
<li> When starting sound recording, input will revert to the default
device. This is almost certainly not the device from which you
wanted to record. (The input can be pointed back to a more suitable
source using the sound pane in the system preferences, <i>after</i>
the sound recorder has been started in Squeak.) </li>
<li> There is currently no support for MIDI, tablets or joysticks. </li>
<li> Printing from the File menu is not yet implemented (although the menu
items are already there as placeholders). </li>
<li> Printing a Form from within Squeak is only partially implemented.
(The output is monochrome and scaling/orientation options are
ignored.) </li>
<li> The Squeak window does not accept `first click'. (In other words,
clicking in the window while it's inactive will activate Squeak but
the click will otherwise be ignored.) If this bothers you, then it
shouldn't. </li>
<li> There is (currently) no way to open multiple images at the same time
from the Finder. (Squeak can be run multiple times from the command
line if working with more than one image at the same time is
required.) </li>
<li> If the VM locks up for any reason while in fullscreen mode there is a
chance that Option-Command-Escape will not work. (The `Force Quit'
dialog is actually there, it's just completely obscured by the Squeak
window which is at a higher level [in fact, the highest] in the
display order.) If this occurs then the first thing to try is
pressing RETURN twice (after pressing Option-Command-Escape). If
that doesn't kill Squeak then the only other escape route is to log
in to the machine remotely and kill the Squeak process by hand. (An
`emergency exit' key combination will soon be implemented by the VM
itself to cater for this situation. This is right at the top of the
to-do list.) </li>
<li> There is a small danger of the Window Server becoming catatonic while
running Croquet (since there may be outstanding issues with
multithreaded OpenGL that I've not yet caught and eliminated). The
symptoms are a spinning `coloured carousel' cursor and absolutely no
response whatsoever from any window on the screen. If this happens,
the only way out is logging in to the machine remotely (as root) and
then typing: <tt>sync; reboot</tt> (There could well
be a several-minute delay while the kernel tries to kill an already
undead Window Server before the reboot actually happens.) </li>
<li> Enabling (or disabling) the command keys via the Window menu causes
the Squeak menu title to lose boldface. This is a bit of a
mystery... </li>
<li> Help is only available when Squeak is launched from the Finder. (I
haven't figured out why it behaves that way, but it's on the
list.) </li>
<li> The Squeak Help Book (this document) has not yet been written. </li>
<li> As you've no doubt just discovered, the Help Viewer refuses to
display a scroll bar when the content is too large until you try to
resize the window. It's also incapable of scrolling in response to
the arrow keys. Ho hum. </li>
</ul>
</font>
</body>
</html>
|
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:40:49
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources/SqueakHelp/images In directory sc8-pr-cvs1:/tmp/cvs-serv27235/images Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources/SqueakHelp/images added to the repository |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:40:35
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources/SqueakHelp In directory sc8-pr-cvs1:/tmp/cvs-serv27125/SqueakHelp Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources/SqueakHelp added to the repository |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:38:30
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/zzz In directory sc8-pr-cvs1:/tmp/cvs-serv26340/zzz Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/zzz added to the repository |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:38:30
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources In directory sc8-pr-cvs1:/tmp/cvs-serv26340/Resources Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-display-Quartz/Resources added to the repository |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:34:29
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-NAS In directory sc8-pr-cvs1:/tmp/cvs-serv24623/vm-sound-NAS Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-sound-NAS added to the repository |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:34:26
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-null In directory sc8-pr-cvs1:/tmp/cvs-serv24623/vm-sound-null Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-sound-null added to the repository |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:34:26
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-MacOSX In directory sc8-pr-cvs1:/tmp/cvs-serv24623/vm-sound-MacOSX Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-sound-MacOSX added to the repository |
|
From: Brenda L. <asp...@us...> - 2003-05-13 22:34:26
|
Update of /cvsroot/squeak/squeak/platforms/unix/vm-sound-OSS In directory sc8-pr-cvs1:/tmp/cvs-serv24623/vm-sound-OSS Log Message: Directory /cvsroot/squeak/squeak/platforms/unix/vm-sound-OSS added to the repository |