Remove Win32 and X11 simulator sources. They've been deprecated for a while in favour of the SDL sim. Time to go.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10543 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dan Everton 2006-08-12 10:28:30 +00:00
parent 509ee3d42c
commit 9d2929b79b
71 changed files with 0 additions and 6719 deletions

View file

@ -1,69 +0,0 @@
############################################################################
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
# Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
#
# All files in this archive are subject to the GNU General Public License.
# See the file COPYING in the source tree root for full license agreement.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
############################################################################
SIMCOMMON = ../common
DEPFILE = $(OBJDIR)/dep-simwin
RM = rm -f
DEBUG = -g
INCLUDES = -I. -I$(SIMCOMMON) -I$(OBJDIR) -I$(FIRMDIR)/export -I$(APPSDIR) \
-I$(BUILDDIR)
DEFINES = -DHAVE_CONFIG_H -DGETTIMEOFDAY_TWO_ARGS -DSIMULATOR \
$(TARGET) -DAPPSVERSION=\"$(VERSION)\" -DMEM=${MEMORYSIZE} $(EXTRA_DEFINES)
# This sets up 'SRC' based on the files mentioned in SOURCES
include $(TOOLSDIR)/makesrc.inc
OBJS := $(SRC:%.c=$(OBJDIR)/%.o)
SOURCES = $(SRC)
DIRS = .
CFLAGS = $(DEBUG) $(DEFINES) $(INCLUDES) -W -Wall -mno-cygwin
OUTFILE = $(BUILDDIR)/libsim.a
all: $(OUTFILE)
$(OUTFILE): $(OBJS) $(OBJDIR)/UI256.bmp $(OBJDIR)/uisw32-res.o
@echo "AR+RANLIB $@"
@$(AR) ruv $@ $(OBJS) $(OBJDIR)/uisw32-res.o >/dev/null 2>&1
@$(RANLIB) $@
clean:
@echo "cleaning simwin"
@$(RM) $(OBJS) *~ core $(OUTFILE) $(OBJDIR)/uisw32-res.o \
$(OBJDIR)/UI256.bmp $(DEPFILE)
@$(MAKE) -C $(SIMCOMMON) clean
################## Specific dependencies ##################
$(OBJDIR)/UI256.bmp: UI-$(ARCHOS).bmp
@echo UI
@cp $< $@
$(OBJDIR)/uisw32-res.o: uisw32.rc $(OBJDIR)/UI256.bmp
@echo "WINDRES"
@$(WINDRES) --include-dir $(OBJDIR) -i $< -o $@
include $(TOOLSDIR)/make.inc
-include $(DEPFILE)

View file

@ -1,101 +0,0 @@
############################################################################
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
# Copyright (C) 2002 by Felix Arends
#
# All files in this archive are subject to the GNU General Public License.
# See the file COPYING in the source tree root for full license agreement.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
############################################################################
#CHANGE THIS FIELD TO SPECIFY RECORDER OR PLAYER (Player does not work very well atm)
TARGET = RECORDER
FIRMWAREDIR = ../../firmware
DRIVERS = $(FIRMWAREDIR)/drivers
COMMON = $(FIRMWAREDIR)/common
APPSCOMMON = ../common
TOOLSDIR = ..\..\tools
SIMDIR = ../win32/
APPDIR = ../../apps/
PLAYERDIR = $(APPDIR)player/
RECDIR = $(APPDIR)recorder/
RM = del
LANGUAGE = english
FONT = $(FIRMWAREDIR)/fonts/clR6x8.bdf
!IF ("$(TARGET)" == "RECORDER")
DISPLAY = -DHAVE_LCD_BITMAP
KEYPAD = -DHAVE_RECORDER_KEYPAD
MODEL_SPECIFIC_DIR = $(RECDIR)
!ELSE
DISPLAY = -DHAVE_LCD_CHARCELLS
KEYPAD = -DHAVE_PLAYER_KEYPAD
MODEL_SPECIFIC_DIR = $(PLAYERDIR)
!ENDIF
CC = cl
RC = rc
LINK = link
DEFINES = $(DEFINES) -DWIN32 -DHAVE_CONFIG_H -DGETTIMEOFDAY_TWO_ARGS -DSIMULATOR $(KEYPAD) $(DISPLAY) -DAPPSVERSION=\"WIN32SIM\"
LDFLAGS = /OUT:uisw32.exe /SUBSYSTEM:windows /NOLOGO /MACHINE:IX86 kernel32.lib user32.lib gdi32.lib
INCLUDES = -I$(FIRMWAREDIR)/export -I$(DRIVERS) -I$(COMMON) -I$(APPSCOMMON) -I$(SIMDIR) -I$(APPDIR) -I$(MODEL_SPECIFIC_DIR)
LIBS = /DEFAULTLIB:gdi32.lib /DEFAULTLIB:user32.lib /NODEFAULTLIB:libc.lib
CFLAGS = $(DEBUG) $(DEFINES) $(INCLUDES) /MD /Fd"Release/vc70.pdb" /c
SRCS = *.c \
$(DRIVERS)/power.c \
$(APPDIR)*.c \
$(APPSCOMMON)/lcd-common.c $(APPSCOMMON)/mpegplay.c $(APPSCOMMON)/sim_icons.c $(APPSCOMMON)/stubs.c \
$(FIRMWAREDIR)/mpeg.c $(FIRMWAREDIR)/id3.c $(FIRMWAREDIR)/usb.c $(FIRMWAREDIR)/mpeg.c $(FIRMWAREDIR)/font.c $(FIRMWAREDIR)/powermgmt.c \
$(COMMON)/sprintf.c $(COMMON)/strtok.c $(COMMON)/errno.c
!IF ("$(DISPLAY)" == "-DHAVE_LCD_BITMAP")
SRCS = $(SRCS) $(RECDIR)/bmp.c $(RECDIR)/bounce.c $(RECDIR)/cube.c $(RECDIR)/icons.c $(RECDIR)/keyboard.c $(RECDIR)/peakmeter.c \
$(RECDIR)/snow.c $(RECDIR)/sokoban.c $(RECDIR)/tetris.c $(RECDIR)/widgets.c $(RECDIR)/wormlet.c $(DRIVERS)/lcd-recorder.c
!ELSE
SRCS = $(SRCS) $(APPSCOMMON)/lcd-playersim.c $(DRIVERS)/lcd-player.c $(PLAYERDIR)*.c
!ENDIF
OBJS = lang.obj $(SRCS:.c=.obj) uisw32.res
all : uisw32.exe
$(APPDIR)credits.raw:
perl $(APPDIR)credits.pl < ../../docs/CREDITS > $(APPDIR)credits.raw
kernel.obj:
$(CC) $(CFLAGS) *.c
sysfont.c: $(FONT)
$(TOOLSDIR)\convbdf -c -o sysfont.c $(FONT)
sysfont.obj: sysfont.c
$(CC) $(CFLAGS) sysfont.c
uisw32.exe: $(APPDIR)credits.raw $(OBJS) sysfont.obj kernel.obj
$(LINK) $(LIBS) $(LDFLAGS) *.obj uisw32.res
uisw32.res:
$(RC) /r uisw32.rc
build.lang: $(APPDIR)/lang/$(LANGUAGE).lang
perl $(TOOLSDIR)/uplang $(APPDIR)/lang/english.lang $(APPDIR)/lang/$(LANGUAGE).lang > build.lang
lang.obj: build.lang
perl -s $(TOOLSDIR)/genlang -p=lang build.lang
$(CC) $(CFLAGS) -c lang.c -o lang.obj
clean:
$(RM) *.obj ..\..\apps\lang.c ..\..\apps\lang.h ..\..\apps\credits.raw lang.build uisw32.res uisw32.exe

View file

@ -1,12 +0,0 @@
button.c
debug-win32.c
#if 0 /* this is only for non-cygwin simulator builds */
dir-win32.c
#endif
kernel.c
lcd-win32.c
panic-win32.c
string-win32.c
thread-win32.c
uisw32.c
sound.c

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

View file

@ -1,20 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
int atoi(const char *);

View file

@ -1,286 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <windows.h>
#include "uisw32.h"
#include "config.h"
#include "button.h"
#include "kernel.h"
#include "backlight.h"
#include "misc.h"
/* how long until repeat kicks in */
#define REPEAT_START 6
/* the speed repeat starts at */
#define REPEAT_INTERVAL_START 4
/* speed repeat finishes at */
#define REPEAT_INTERVAL_FINISH 2
struct event_queue button_queue;
static int btn = 0; /* Hopefully keeps track of currently pressed keys... */
void button_event(int key, bool pressed)
{
int new_btn = 0;
int diff = 0;
static int count = 0;
static int lastbtn;
static int repeat_speed = REPEAT_INTERVAL_START;
static int repeat_count = 0;
static bool repeat = false;
static bool post = false;
switch (key)
{
case VK_NUMPAD4:
case VK_LEFT:
new_btn = BUTTON_LEFT;
break;
case VK_NUMPAD6:
case VK_RIGHT:
new_btn = BUTTON_RIGHT;
break;
case VK_NUMPAD8:
case VK_UP:
#ifdef BUTTON_UP
new_btn = BUTTON_UP;
#elif defined BUTTON_SCROLL_FWD
new_btn = BUTTON_SCROLL_FWD;
#elif defined BUTTON_PLAY
new_btn = BUTTON_PLAY;
#endif
break;
case VK_NUMPAD2:
case VK_DOWN:
#ifdef BUTTON_DOWN
new_btn = BUTTON_DOWN;
#elif defined BUTTON_SCROLL_BACK
new_btn = BUTTON_SCROLL_BACK;
#elif defined BUTTON_STOP
new_btn = BUTTON_STOP;
#endif
break;
case VK_ADD:
#ifdef BUTTON_ON
new_btn = BUTTON_ON;
#elif defined(BUTTON_SELECT) && defined(BUTTON_PLAY)
new_btn = BUTTON_PLAY;
#endif
break;
#ifdef BUTTON_OFF
case VK_RETURN:
new_btn = BUTTON_OFF;
break;
#endif
#ifdef BUTTON_F1
case VK_DIVIDE:
case VK_F1:
new_btn = BUTTON_F1;
break;
case VK_MULTIPLY:
case VK_F2:
new_btn = BUTTON_F2;
break;
case VK_SUBTRACT:
case VK_F3:
new_btn = BUTTON_F3;
break;
#elif defined(BUTTON_REC)
case VK_DIVIDE:
case VK_F1:
new_btn = BUTTON_REC;
break;
#endif
case VK_NUMPAD5:
case VK_SPACE:
#if defined(BUTTON_PLAY) && !defined(BUTTON_SELECT)
new_btn = BUTTON_PLAY;
#elif defined(BUTTON_SELECT)
new_btn = BUTTON_SELECT;
#endif
break;
#ifdef HAVE_LCD_BITMAP
case VK_NUMPAD0:
case VK_F5:
if(pressed)
{
screen_dump();
return;
}
break;
#endif
case VK_DECIMAL:
case VK_INSERT:
#ifdef BUTTON_MENU
new_btn = BUTTON_MENU;
#elif defined(BUTTON_MODE)
new_btn = BUTTON_MODE;
#endif
break;
}
if (pressed)
btn |= new_btn;
else
btn &= ~new_btn;
/* Lots of stuff copied from real button.c. Not good, I think... */
/* Find out if a key has been released */
diff = btn ^ lastbtn;
if(diff && (btn & diff) == 0)
{
queue_post(&button_queue, BUTTON_REL | diff, NULL);
}
else
{
if ( btn )
{
/* normal keypress */
if ( btn != lastbtn )
{
post = true;
repeat = false;
repeat_speed = REPEAT_INTERVAL_START;
}
else /* repeat? */
{
if ( repeat )
{
if (!post)
count--;
if (count == 0)
{
post = true;
/* yes we have repeat */
repeat_speed--;
if (repeat_speed < REPEAT_INTERVAL_FINISH)
repeat_speed = REPEAT_INTERVAL_FINISH;
count = repeat_speed;
repeat_count++;
}
}
else
{
if (count++ > REPEAT_START)
{
post = true;
repeat = true;
repeat_count = 0;
/* initial repeat */
count = REPEAT_INTERVAL_START;
}
}
}
if ( post )
{
if(repeat)
{
if (queue_empty(&button_queue))
{
queue_post(&button_queue, BUTTON_REPEAT | btn, NULL);
post = false;
}
}
else
{
queue_post(&button_queue, btn, NULL);
post = false;
}
#ifdef HAVE_REMOTE_LCD
if(btn & BUTTON_REMOTE)
remote_backlight_on();
else
#endif
backlight_on();
}
}
else
{
repeat = false;
count = 0;
}
}
lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT);
}
/* Again copied from real button.c... */
long button_get(bool block)
{
struct event ev;
if ( block || !queue_empty(&button_queue) ) {
queue_wait(&button_queue, &ev);
return ev.id;
}
return BUTTON_NONE;
}
long button_get_w_tmo(int ticks)
{
struct event ev;
queue_wait_w_tmo(&button_queue, &ev, ticks);
return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE;
}
void button_init(void)
{
}
int button_status(void)
{
return btn;
}
void button_clear_queue(void)
{
queue_clear(&button_queue);
}
#ifdef HAS_BUTTON_HOLD
bool button_hold(void) {
/* temp fix for hold button on irivers */
return false;
}
#endif
#ifdef HAS_REMOTE_BUTTON_HOLD
bool remote_button_hold(void) {
/* temp fix for hold button on irivers */
return false;
}
#endif

View file

@ -1,66 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <windows.h>
#include <stdio.h>
char debugmembuf[200];
void debug( const char *message )
{
static int debugger = -1;
if (debugger == -1)
{
HINSTANCE hInst = LoadLibrary("kernel32.dll");
debugger = 0;
if (hInst != NULL)
{
FARPROC pIsDebuggerPresent = GetProcAddress(hInst, "IsDebuggerPresent");
if (pIsDebuggerPresent != NULL)
debugger = pIsDebuggerPresent();
}
}
if (debugger)
OutputDebugString (message);
else
printf("%s", message);
}
void debugf(const char *fmt, ...)
{
va_list ap;
va_start( ap, fmt );
wvsprintf( debugmembuf, fmt, ap );
va_end( ap );
debug ( debugmembuf );
}
void Logf(char *fmt, ...)
{
va_list ap;
va_start( ap, fmt );
wvsprintf( debugmembuf, fmt, ap );
va_end( ap );
debug ( debugmembuf );
}

View file

@ -1,91 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <io.h>
#include <windows.h>
#include <malloc.h>
#include "dir-win32.h"
// Directory operations
//
// opendir
// open directory for scanning
DIR *opendir (
const char *dirname // directory name
)
{
DIR *p = (DIR*)malloc(sizeof(DIR));
struct _finddata_t fd;
unsigned int i;
char *s = (char*)malloc(strlen(dirname) + 5);
wsprintf (s, "%s", dirname);
for (i = 0; i < strlen(s); i++)
if (s[i] == '/')
s[i] = '\\';
if (s[i - 1] != '\\')
{
s[i] = '\\';
s[++i] = '\0';
}
OutputDebugString (s);
wsprintf (s, "%s*.*", s);
if ((p->handle = _findfirst (s, &fd)) == -1)
{
free (s);
free (p);
return 0;
}
free (s);
return p;
}
// closedir
// close directory
int closedir (
DIR *dir // previously opened dir search
)
{
free(dir);
return 0;
}
// read dir
// read next entry in directory
struct dirent *readdir (
DIR *dir
)
{
struct _finddata_t fd;
if (_findnext (dir->handle, &fd) == -1)
return 0;
memcpy (dir->fd.d_name, fd.name, 256);
dir->fd.attribute = fd.attrib & 0x3f;
dir->fd.size = fd.size;
dir->fd.startcluster = 0 ;
return &dir->fd;
}

View file

@ -1,46 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Björn Stenberg
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _DIR_WIN32_H_
#define _DIR_WIN32_H_
#include <stdbool.h>
struct dirent {
unsigned char d_name[MAX_PATH];
int attribute;
int size;
int startcluster;
};
typedef struct
{
struct dirent fd;
int handle;
} DIR;
extern DIR* opendir(const char* name);
extern int closedir(DIR* dir);
extern int mkdir(const char* name);
extern int rmdir(const char* name);
extern struct dirent* readdir(DIR* dir);
#define S_ISDIR(x) (((x) & _S_IFDIR) == _S_IFDIR)
#endif

View file

@ -1,167 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <windows.h>
#include "uisw32.h"
#include "kernel.h"
#include "thread-win32.h"
#include "thread.h"
#include "debug.h"
static void (*tick_funcs[MAX_NUM_TICK_TASKS])(void);
int set_irq_level (int level)
{
static int _lv = 0;
return (_lv = level);
}
void queue_init(struct event_queue *q)
{
q->read = 0;
q->write = 0;
}
void queue_delete(struct event_queue *q)
{
(void)q;
}
void queue_wait(struct event_queue *q, struct event *ev)
{
while(q->read == q->write)
{
switch_thread();
}
*ev = q->events[(q->read++) & QUEUE_LENGTH_MASK];
}
void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks)
{
unsigned int timeout = current_tick + ticks;
while(q->read == q->write && TIME_BEFORE( current_tick, timeout ))
{
sleep(1);
}
if(q->read != q->write)
{
*ev = q->events[(q->read++) & QUEUE_LENGTH_MASK];
}
else
{
ev->id = SYS_TIMEOUT;
}
}
void queue_post(struct event_queue *q, long id, void *data)
{
int wr;
int oldlevel;
oldlevel = set_irq_level(15<<4);
wr = (q->write++) & QUEUE_LENGTH_MASK;
q->events[wr].id = id;
q->events[wr].data = data;
set_irq_level(oldlevel);
}
bool queue_empty(const struct event_queue* q)
{
return ( q->read == q->write );
}
void queue_clear(struct event_queue* q)
{
/* fixme: This is potentially unsafe in case we do interrupt-like processing */
q->read = 0;
q->write = 0;
}
void switch_thread (void)
{
yield ();
}
void sim_tick_tasks(void)
{
int i;
/* Run through the list of tick tasks */
for(i = 0;i < MAX_NUM_TICK_TASKS;i++)
{
if(tick_funcs[i])
{
tick_funcs[i]();
}
}
}
int tick_add_task(void (*f)(void))
{
int i;
/* Add a task if there is room */
for(i = 0;i < MAX_NUM_TICK_TASKS;i++)
{
if(tick_funcs[i] == NULL)
{
tick_funcs[i] = f;
return 0;
}
}
DEBUGF("Error! tick_add_task(): out of tasks");
return -1;
}
int tick_remove_task(void (*f)(void))
{
int i;
/* Remove a task if it is there */
for(i = 0;i < MAX_NUM_TICK_TASKS;i++)
{
if(tick_funcs[i] == f)
{
tick_funcs[i] = NULL;
return 0;
}
}
return -1;
}
/* TODO: Implement mutexes for win32 */
void mutex_init(struct mutex *m)
{
(void)m;
}
void mutex_lock(struct mutex *m)
{
(void)m;
}
void mutex_unlock(struct mutex *m)
{
(void)m;
}

View file

@ -1,326 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <windows.h>
#include <process.h>
#include "uisw32.h"
#include "lcd.h"
#include "lcd-playersim.h"
#include "debug.h"
#if LCD_DEPTH == 16
unsigned short bitmap[LCD_HEIGHT][LCD_WIDTH]; /* the ui display */
BITMAPINFO256 bmi =
{
{sizeof (BITMAPINFOHEADER),
LCD_WIDTH, -LCD_HEIGHT, 1, 16,
BI_BITFIELDS, 0, 0, 0, 3, 3,
}, /* bitfield masks (RGB565) */
{{0x00, 0xf8, 0, 0}, {0xe0, 0x07, 0, 0}, {0x1f, 0x00, 0, 0}}
}; /* bitmap information */
#else
unsigned char bitmap[LCD_HEIGHT][LCD_WIDTH]; /* the ui display */
RGBQUAD color_zero = {UI_LCD_BGCOLORLIGHT, 0};
RGBQUAD color_max = {0, 0, 0, 0};
BITMAPINFO256 bmi =
{
{sizeof (BITMAPINFOHEADER),
LCD_WIDTH, -LCD_HEIGHT, 1, 8,
BI_RGB, 0, 0, 0, 2, 2,
},
{} /* colour lookup table gets filled later */
}; /* bitmap information */
#endif
#ifdef HAVE_LCD_BITMAP
#ifdef HAVE_REMOTE_LCD
unsigned char remote_bitmap[LCD_REMOTE_HEIGHT][LCD_REMOTE_WIDTH];
RGBQUAD remote_color_zero = {UI_REMOTE_BGCOLORLIGHT, 0};
RGBQUAD remote_color_max = {0, 0, 0, 0};
BITMAPINFO256 remote_bmi =
{
{sizeof (BITMAPINFOHEADER),
LCD_REMOTE_WIDTH, -LCD_REMOTE_HEIGHT, 1, 8,
BI_RGB, 0, 0, 0, 2, 2,
},
{} /* colour lookup table gets filled later */
};
#endif
void lcd_update(void)
{
lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT);
}
void lcd_update_rect(int x_start, int y_start,
int width, int height)
{
int x, y;
int xmax, ymax;
RECT r;
ymax = y_start + height;
xmax = x_start + width;
if (hGUIWnd == NULL)
_endthread ();
if(xmax > LCD_WIDTH)
xmax = LCD_WIDTH;
if(ymax >= LCD_HEIGHT)
ymax = LCD_HEIGHT;
for (x = x_start; x < xmax; x++)
for (y = y_start; y < ymax; y++)
{
#if LCD_DEPTH == 1
bitmap[y][x] = ((lcd_framebuffer[y/8][x] >> (y & 7)) & 1);
#elif LCD_DEPTH == 2
#if LCD_PIXELFORMAT == HORIZONTAL_PACKING
bitmap[y][x] = ((lcd_framebuffer[y][x/4] >> (2 * (x & 3))) & 3);
#else
bitmap[y][x] = ((lcd_framebuffer[y/4][x] >> (2 * (y & 3))) & 3);
#endif
#elif LCD_DEPTH == 16
#if LCD_PIXELFORMAT == RGB565SWAPPED
unsigned bits = lcd_framebuffer[y][x];
bitmap[y][x] = (bits >> 8) | (bits << 8);
#else
bitmap[y][x] = lcd_framebuffer[y][x];
#endif
#endif
}
/* Invalidate only the window part that actually did change */
GetClientRect (hGUIWnd, &r);
r.left = (UI_LCD_POSX + (UI_LCD_WIDTH * x_start / LCD_WIDTH))
* r.right / UI_WIDTH;
r.top = (UI_LCD_POSY + (UI_LCD_HEIGHT * y_start / LCD_HEIGHT))
* r.bottom / UI_HEIGHT;
r.right = (UI_LCD_POSX + (UI_LCD_WIDTH * xmax / LCD_WIDTH))
* r.right / UI_WIDTH;
r.bottom = (UI_LCD_POSY + (UI_LCD_HEIGHT * ymax / LCD_HEIGHT))
* r.bottom / UI_HEIGHT;
InvalidateRect (hGUIWnd, &r, FALSE);
}
#ifdef HAVE_REMOTE_LCD
extern unsigned char lcd_remote_framebuffer[LCD_REMOTE_HEIGHT/8][LCD_REMOTE_WIDTH];
void lcd_remote_update (void)
{
lcd_remote_update_rect(0, 0, LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT);
}
void lcd_remote_update_rect(int x_start, int y_start,
int width, int height)
{
int x, y;
int xmax, ymax;
RECT r;
ymax = y_start + height;
xmax = x_start + width;
if (hGUIWnd == NULL)
_endthread ();
if(xmax > LCD_REMOTE_WIDTH)
xmax = LCD_REMOTE_WIDTH;
if(ymax >= LCD_REMOTE_HEIGHT)
ymax = LCD_REMOTE_HEIGHT;
for (x = x_start; x < xmax; x++)
for (y = y_start; y < ymax; y++)
remote_bitmap[y][x] = ((lcd_remote_framebuffer[y/8][x] >> (y & 7)) & 1);
/* Invalidate only the window part that actually did change */
GetClientRect (hGUIWnd, &r);
r.left = (UI_REMOTE_POSX + (UI_REMOTE_WIDTH * x_start / LCD_REMOTE_WIDTH))
* r.right / UI_WIDTH;
r.top = (UI_REMOTE_POSY + (UI_REMOTE_HEIGHT * y_start / LCD_REMOTE_HEIGHT))
* r.bottom / UI_HEIGHT;
r.right = (UI_REMOTE_POSX + (UI_REMOTE_WIDTH * xmax / LCD_REMOTE_WIDTH))
* r.right / UI_WIDTH;
r.bottom = (UI_REMOTE_POSY + (UI_REMOTE_HEIGHT * ymax / LCD_REMOTE_HEIGHT))
* r.bottom / UI_HEIGHT;
InvalidateRect (hGUIWnd, &r, FALSE);
}
#endif /* HAVE_REMOTE_LCD */
#endif /* HAVE_LCD_BITMAP */
#ifdef HAVE_LCD_CHARCELLS
/* Defined in lcd-playersim.c */
extern void lcd_print_char(int x, int y);
extern bool lcd_display_redraw;
extern unsigned char hardware_buffer_lcd[11][2];
static unsigned char lcd_buffer_copy[11][2];
void lcd_update(void)
{
int x, y;
bool changed = false;
RECT r;
if (hGUIWnd == NULL)
_endthread ();
for (y = 0; y < 2; y++)
{
for (x = 0; x < 11; x++)
{
if (lcd_display_redraw ||
lcd_buffer_copy[x][y] != hardware_buffer_lcd[x][y])
{
lcd_buffer_copy[x][y] = hardware_buffer_lcd[x][y];
lcd_print_char(x, y);
changed = true;
}
}
}
if (changed)
{
/* Invalidate only the window part that actually did change */
GetClientRect (hGUIWnd, &r);
r.left = UI_LCD_POSX * r.right / UI_WIDTH;
r.top = UI_LCD_POSY * r.bottom / UI_HEIGHT;
r.right = (UI_LCD_POSX + UI_LCD_WIDTH) * r.right / UI_WIDTH;
r.bottom = (UI_LCD_POSY + UI_LCD_HEIGHT) * r.bottom / UI_HEIGHT;
InvalidateRect (hGUIWnd, &r, FALSE);
}
lcd_display_redraw = false;
}
void drawdots(int color, struct coordinate *points, int count)
{
while (count--)
{
bitmap[points[count].y][points[count].x] = color;
}
}
void drawrectangles(int color, struct rectangle *points, int count)
{
while (count--)
{
int x;
int y;
int ix;
int iy;
for (x = points[count].x, ix = 0; ix < points[count].width; x++, ix++)
{
for (y = points[count].y, iy = 0; iy < points[count].height; y++, iy++)
{
bitmap[y][x] = color;
}
}
}
}
#endif /* HAVE_LCD_CHARCELLS */
#if 0
/* set backlight state of lcd */
void lcd_backlight (bool on)
{
if (on)
color_zero = {UI_LCD_BGCOLORLIGHT, 0};
else
color_zero = {UI_LCD_BGCOLOR, 0};
lcdcolors(0, (1<<LCD_DEPTH), &color_zero, &color_max);
InvalidateRect (hGUIWnd, NULL, FALSE);
}
#endif
#if LCD_DEPTH <= 8
/* set a range of bitmap indices to a gradient from startcolour to endcolour */
void lcdcolors(int index, int count, RGBQUAD *start, RGBQUAD *end)
{
int i;
bmi.bmiHeader.biClrUsed = index + count;
bmi.bmiHeader.biClrImportant = index + count;
count--;
for (i = 0; i <= count; i++)
{
bmi.bmiColors[i+index].rgbRed = start->rgbRed
+ (end->rgbRed - start->rgbRed) * i / count;
bmi.bmiColors[i+index].rgbGreen = start->rgbGreen
+ (end->rgbGreen - start->rgbGreen) * i / count;
bmi.bmiColors[i+index].rgbBlue = start->rgbBlue
+ (end->rgbBlue - start->rgbBlue) * i / count;
}
}
#endif
#ifdef HAVE_REMOTE_LCD
/* set a range of bitmap indices to a gradient from startcolour to endcolour */
void lcdremotecolors(int index, int count, RGBQUAD *start, RGBQUAD *end)
{
int i;
remote_bmi.bmiHeader.biClrUsed = index + count;
remote_bmi.bmiHeader.biClrImportant = index + count;
count--;
for (i = 0; i <= count; i++)
{
remote_bmi.bmiColors[i+index].rgbRed = start->rgbRed
+ (end->rgbRed - start->rgbRed) * i / count;
remote_bmi.bmiColors[i+index].rgbGreen = start->rgbGreen
+ (end->rgbGreen - start->rgbGreen) * i / count;
remote_bmi.bmiColors[i+index].rgbBlue = start->rgbBlue
+ (end->rgbBlue - start->rgbBlue) * i / count;
}
}
#endif
/* initialise simulator lcd driver */
void simlcdinit(void)
{
#if LCD_DEPTH <= 8
lcdcolors(0, (1<<LCD_DEPTH), &color_zero, &color_max);
#endif
#ifdef HAVE_REMOTE_LCD
lcdremotecolors(0, (1<<LCD_REMOTE_DEPTH), &remote_color_zero, &remote_color_max);
#endif
}
#ifdef CONFIG_BACKLIGHT
void sim_backlight(int value)
{
DEBUGF("backlight: %s\n", (value > 0) ? "on" : "off");
}
#endif
#ifdef HAVE_REMOTE_LCD
void sim_remote_backlight(int value)
{
DEBUGF("remote backlight: %s\n", (value > 0) ? "on" : "off");
}
#endif

View file

@ -1,47 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __LCDWIN32_H__
#define __LCDWIN32_H__
#include "uisw32.h"
#include "lcd.h"
// BITMAPINFO256
typedef struct
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[256];
} BITMAPINFO256;
#if LCD_DEPTH <= 8
extern unsigned char bitmap[LCD_HEIGHT][LCD_WIDTH]; // the ui display
#elif LCD_DEPTH <= 16
extern unsigned short bitmap[LCD_HEIGHT][LCD_WIDTH]; // the ui display
#endif
extern BITMAPINFO256 bmi; // bitmap information
#ifdef HAVE_REMOTE_LCD
extern unsigned char remote_bitmap[LCD_REMOTE_HEIGHT][LCD_REMOTE_WIDTH];
extern BITMAPINFO256 remote_bmi; // bitmap information
#endif
void simlcdinit(void);
#endif // #ifndef __LCDWIN32_H__

View file

@ -1,43 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <windows.h>
#include "debug.h"
char panic_buf[128];
// panic
// whatever it says ;)
void panic( char *message )
{
debugf ( message );
PostQuitMessage (-1);
}
// panicf
// formatted panic
void panicf( char *fmt, ...)
{
va_list ap;
va_start( ap, fmt );
wsprintf( panic_buf, fmt, ap );
va_end( ap );
panic( panic_buf );
}

View file

@ -1,48 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 Björn Stenberg
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _PLUGIN_WIN32_H_
#define _PLUGIN_WIN32_H_
#define BOOL win32_BOOL /* Avoid conflicts with BOOL/INT defined as */
#define INT win32_INT /* enum values in settings.h */
#include <windows.h>
#include "plugin.h"
#include "file.h"
#define RTLD_NOW 0
#undef filesize
#define filesize win32_filesize
#undef ftruncate
#define ftruncate NULL
typedef enum plugin_status (*plugin_fn)(struct plugin_api* api, void* param);
#define dlopen(_x_, _y_) LoadLibrary(_x_)
#define dlsym(_x_, _y_) (plugin_fn)GetProcAddress(_x_, _y_)
#define dlclose(_x_) FreeLibrary(_x_)
#define dlerror() "Unknown"
int strcasecmp (const char *a, const char *b);
int strncasecmp (const char *a, const char *b, size_t n);
#endif

View file

@ -1,2 +0,0 @@
EXPORTS
__header

View file

@ -1,19 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by uisw32.rc
//
#define IDB_BITMAP1 102
#define IDR_JPG1 103
#define IDB_BITMAP2 104
#define IDB_UI 104
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 105
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View file

@ -1,626 +0,0 @@
# Microsoft Developer Studio Project File - Name="rockbox" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=rockbox - Win32 Player
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "rockbox.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "rockbox.mak" CFG="rockbox - Win32 Player"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "rockbox - Win32 Recorder" (based on "Win32 (x86) Application")
!MESSAGE "rockbox - Win32 Player" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "rockbox___Win32_Recorder"
# PROP BASE Intermediate_Dir "rockbox___Win32_Recorder"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "rockbox___Win32_Recorder"
# PROP Intermediate_Dir "rockbox___Win32_Recorder"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../win32" /I "../../apps/recorder" /I "../../firmware/export" /I "../../firmware/drivers" /I "../../firmware/common" /I "../common" /I "../../apps" /D "ARCHOS_RECORDER" /D "HAVE_LCD_BITMAP" /D "HAVE_RECORDER_KEYPAD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "HAVE_CONFIG_H" /D "GETTIMEOFDAY_TWO_ARGS" /D "SIMULATOR" /D "HAVE_RTC" /D APPSVERSION=\"WIN32SIM\" /FR /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libcmtd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /pdbtype:sept
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "rockbox___Win32_Player"
# PROP BASE Intermediate_Dir "rockbox___Win32_Player"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "rockbox___Win32_Player"
# PROP Intermediate_Dir "rockbox___Win32_Player"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../win32" /I "../../apps/player" /I "../../firmware/export" /I "../../firmware/drivers" /I "../../firmware/common" /I "../common" /I "../../apps" /D "ARCHOS_PLAYER" /D "HAVE_LCD_CHARCELLS" /D "HAVE_PLAYER_KEYPAD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "HAVE_CONFIG_H" /D "GETTIMEOFDAY_TWO_ARGS" /D "SIMULATOR" /D APPSVERSION=\"WIN32SIM\" /FR /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libcmtd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /pdbtype:sept
!ENDIF
# Begin Target
# Name "rockbox - Win32 Recorder"
# Name "rockbox - Win32 Player"
# Begin Group "Firmware"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\firmware\buffer.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\font.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Exclude_From_Build 1
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\firmware\id3.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\mp3_playback.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\mp3data.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\mpeg.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\powermgmt.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\usb.c
# End Source File
# End Group
# Begin Group "Drivers"
# PROP Default_Filter ""
# Begin Source File
SOURCE="..\..\firmware\drivers\lcd-player-charset.c"
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
!ENDIF
# End Source File
# Begin Source File
SOURCE="..\..\firmware\drivers\lcd-player.c"
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
!ENDIF
# End Source File
# Begin Source File
SOURCE="..\common\lcd-playersim.c"
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
!ENDIF
# End Source File
# Begin Source File
SOURCE="..\..\firmware\drivers\lcd-recorder.c"
!IF "$(CFG)" == "rockbox - Win32 Recorder"
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Exclude_From_Build 1
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\firmware\drivers\power.c
# End Source File
# End Group
# Begin Group "Common"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\firmware\common\errno.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\common\random.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\common\sprintf.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\common\strtok.c
# End Source File
# Begin Source File
SOURCE=..\..\firmware\common\timefuncs.c
# End Source File
# End Group
# Begin Group "Apps"
# PROP Default_Filter ""
# Begin Group "Player"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\apps\player\icons.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\apps\player\icons.h
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\apps\player\keyboard.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
!ENDIF
# End Source File
# End Group
# Begin Group "Recorder"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\apps\recorder\bmp.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Exclude_From_Build 1
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\apps\recorder\icons.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Exclude_From_Build 1
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\apps\recorder\keyboard.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Exclude_From_Build 1
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\apps\recorder\peakmeter.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Exclude_From_Build 1
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\apps\recorder\widgets.c
!IF "$(CFG)" == "rockbox - Win32 Recorder"
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Exclude_From_Build 1
!ENDIF
# End Source File
# End Group
# Begin Source File
SOURCE=..\..\apps\alarm_menu.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\bookmark.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\credits.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\debug_menu.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\filetypes.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\language.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\main.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\main_menu.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\menu.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\misc.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\onplay.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\playlist.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\playlist_menu.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\playlist_viewer.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\plugin.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\screens.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\settings.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\settings_menu.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\sleeptimer.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\sound_menu.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\status.c
# End Source File
# Begin Source File
SOURCE=..\..\apps\tree.c
# End Source File
# Begin Source File
SOURCE="..\..\apps\wps-display.c"
# End Source File
# Begin Source File
SOURCE=..\..\apps\wps.c
# End Source File
# End Group
# Begin Group "Win32"
# PROP Default_Filter ""
# Begin Group "AppsCommon"
# PROP Default_Filter ""
# Begin Source File
SOURCE="..\common\lcd-common.c"
# End Source File
# Begin Source File
SOURCE=..\common\mpegplay.c
# End Source File
# Begin Source File
SOURCE=..\common\sim_icons.c
# End Source File
# Begin Source File
SOURCE=..\common\stubs.c
# End Source File
# End Group
# Begin Source File
SOURCE=.\button.c
# End Source File
# Begin Source File
SOURCE=".\debug-win32.c"
# End Source File
# Begin Source File
SOURCE=".\dir-win32.c"
# End Source File
# Begin Source File
SOURCE="..\common\font-player.c"
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\common\io.c
# End Source File
# Begin Source File
SOURCE=.\kernel.c
# End Source File
# Begin Source File
SOURCE=.\lang.c
# End Source File
# Begin Source File
SOURCE=".\lcd-win32.c"
# End Source File
# Begin Source File
SOURCE=".\mpeg-win32.c"
# End Source File
# Begin Source File
SOURCE=".\panic-win32.c"
# End Source File
# Begin Source File
SOURCE=".\string-win32.c"
# End Source File
# Begin Source File
SOURCE=.\sysfont.c
# End Source File
# Begin Source File
SOURCE=".\thread-win32.c"
# End Source File
# Begin Source File
SOURCE=.\uisw32.c
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\uisw32.rc
# End Source File
# End Group
# Begin Group "Script inputs"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\firmware\fonts\clR6x8.bdf
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# Begin Custom Build - Creating font from $(InputPath)
InputPath=..\..\firmware\fonts\clR6x8.bdf
"sysfont.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
..\..\tools\convbdf -c -o sysfont.c $(InputPath)
# End Custom Build
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# Begin Custom Build - Creating font from $(InputPath)
InputPath=..\..\firmware\fonts\clR6x8.bdf
"sysfont.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
..\..\tools\convbdf -c -o sysfont.c $(InputPath)
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\docs\CREDITS
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# PROP Ignore_Default_Tool 1
# Begin Custom Build - Creating credits from $(InputPath)
InputPath=..\..\docs\CREDITS
"../../apps/credits.raw" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
perl ../../apps/credits.pl < $(InputPath) > ../../apps/credits.raw
# End Custom Build
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# PROP Ignore_Default_Tool 1
# Begin Custom Build - Creating credits from $(InputPath)
InputPath=..\..\docs\CREDITS
"../../apps/credits.raw" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
perl ../../apps/credits.pl < $(InputPath) > ../../apps/credits.raw
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\apps\lang\english.lang
!IF "$(CFG)" == "rockbox - Win32 Recorder"
# Begin Custom Build - Creating language files from $(InputPath)
InputPath=..\..\apps\lang\english.lang
BuildCmds= \
perl -s ..\..\tools\genlang -p=lang $(InputPath)
"lang.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
$(BuildCmds)
"lang.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
$(BuildCmds)
# End Custom Build
!ELSEIF "$(CFG)" == "rockbox - Win32 Player"
# Begin Custom Build - Creating language files from $(InputPath)
InputPath=..\..\apps\lang\english.lang
BuildCmds= \
perl -s ..\..\tools\genlang -p=lang $(InputPath)
"lang.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
$(BuildCmds)
"lang.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
$(BuildCmds)
# End Custom Build
!ENDIF
# End Source File
# End Group
# End Target
# End Project

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -1,201 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2005 by Magnus Holmgren
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "autoconf.h"
#ifdef ROCKBOX_HAS_SIMSOUND
#define WINDOWS_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "sound.h"
#include "kernel.h"
#include "thread-win32.h"
#include "debug.h"
static bool playing = false;
void pcm_play_stop(void);
static void sound_play_chunk(HWAVEOUT wave_out, LPWAVEHDR header,
HANDLE event)
{
unsigned char* buf;
long len;
if (!(header->dwFlags & WHDR_DONE) || !sound_get_pcm)
{
return;
}
EnterCriticalSection(&CriticalSection);
sound_get_pcm(&buf, &len);
LeaveCriticalSection(&CriticalSection);
if (len == 0)
{
DEBUGF("simulator got no pcm\n");
sound_get_pcm = NULL;
return;
}
header->lpData = buf;
header->dwBufferLength = len;
header->dwBytesRecorded = 0;
header->dwUser = 0;
header->dwFlags = 0;
header->dwLoops = 1;
header->lpNext = NULL;
header->reserved = 0;
if (MMSYSERR_NOERROR != waveOutPrepareHeader(wave_out, header,
sizeof(*header)))
{
return;
}
ResetEvent(event);
waveOutWrite(wave_out, header, sizeof(*header));
}
static int sound_init(LPHWAVEOUT wave_out, HANDLE event)
{
static const WAVEFORMATEX format =
{
WAVE_FORMAT_PCM, /* Format */
2, /* Number of channels */
44100, /* Samples per second */
44100 * 4, /* Bytes per second */
4, /* Block align */
16, /* Bits per sample */
0 /* Extra size */
};
if (MMSYSERR_NOERROR != waveOutOpen(wave_out, WAVE_MAPPER, &format,
(DWORD_PTR) event, 0, CALLBACK_EVENT))
{
return -1;
}
/* Full volume on left and right */
waveOutSetVolume(*wave_out, 0xffffffff);
return 0;
}
void sound_playback_thread(void)
{
/* To get smooth playback, two buffers are needed, which are queued for
* playback. (There can still be glitches though.)
*/
HWAVEOUT wave_out;
WAVEHDR header1;
WAVEHDR header2;
HANDLE event;
int result = -1;
if ((event = CreateEvent(NULL, FALSE, FALSE, NULL)))
{
result = sound_init(&wave_out, event);
}
while(-1 == result || !event)
{
Sleep(100000); /* Wait forever, can't play sound! */
}
while (true)
{
while (!sound_get_pcm)
{
/* TODO: fix a fine thread-synch mechanism here */
Sleep(100);
}
DEBUGF("starting simulator playback\n");
header1.dwFlags = WHDR_DONE;
header2.dwFlags = WHDR_DONE;
sound_play_chunk(wave_out, &header1, event);
sound_play_chunk(wave_out, &header2, event);
while (sound_get_pcm
&& (WAIT_FAILED != WaitForSingleObject(event, 1000)))
{
sound_play_chunk(wave_out, &header1, event);
sound_play_chunk(wave_out, &header2, event);
}
pcm_play_stop();
DEBUGF("stopping simulator playback\n");
waveOutReset(wave_out);
}
}
/* Stubs for PCM audio playback. */
bool pcm_is_playing(void)
{
return playing;
}
void pcm_mute(bool state)
{
(void)state;
}
void pcm_play_pause(bool state)
{
(void)state;
}
bool pcm_is_paused(void)
{
return false;
}
void pcm_play_stop(void)
{
playing = false;
}
void pcm_init(void)
{
}
void (*sound_get_pcm)(unsigned char** start, long* size);
void pcm_play_data(void (*get_more)(unsigned char** start, long* size))
{
sound_get_pcm = get_more;
playing = true;
}
long pcm_get_bytes_waiting(void)
{
return 0;
}
#endif /* ROCKBOX_HAS_SIMSOUND */

View file

@ -1,22 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2005 by Daniel Stenberg <daniel@haxx.se>
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
void sound_playback_thread(void);
extern void (*sound_get_pcm)(unsigned char** start, long* size);

View file

@ -1,36 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __SPRINTF_H__
#define __SPRINTF_H__
#include <stddef.h>
#include <stdarg.h>
#include <stdio.h>
int snprintf (char *buf, size_t size, const char *fmt, ...);
char *strtok_r (char *, const char *, char **);
int rockbox_fprintf (int fd, const char *fmt, ...);
#define fprintf rockbox_fprintf
int rockbox_vsnprintf (char *buf, int size, const char *fmt, va_list ap);
#define vsnprintf rockbox_vsnprintf
#endif /* __SPRINTF_H__ */

View file

@ -1,46 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __STDBOOL_H__
#define __STDBOOL_H__ 1
#ifndef __MINGW32__
typedef unsigned int bool;
#define __attribute__(s)
#define true 1
#define false 0
#else
typedef enum
{
false = 0,
true = 1
} bool;
#define false false
#define true true
/* Signal that all the definitions are present. */
#define __bool_true_false_are_defined 1
#endif
#endif /* __STDBOOL_H__ */

View file

@ -1,34 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __MINGW32__
#include <string.h>
int strcasecmp (const char *a, const char *b)
{
return stricmp (a, b);
}
int strncasecmp (const char *a, const char *b, size_t n)
{
return _strnicmp (a, b, n);
}
#endif

View file

@ -1,80 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#define WINDOWS_LEAN_AND_MEAN
#include <windows.h>
#include <time.h>
#include "thread-win32.h"
#include "kernel.h"
#include "debug.h"
HANDLE lpThreads[256];
int nThreads = 0,
nPos = 0;
long current_tick = 0;
CRITICAL_SECTION CriticalSection;
void yield(void)
{
LeaveCriticalSection(&CriticalSection);
Sleep(1);
EnterCriticalSection(&CriticalSection);
}
void sim_sleep(int ticks)
{
LeaveCriticalSection(&CriticalSection);
Sleep((1000/HZ) * ticks);
EnterCriticalSection(&CriticalSection);
}
DWORD WINAPI runthread (LPVOID lpParameter)
{
EnterCriticalSection(&CriticalSection);
((void(*)())lpParameter) ();
LeaveCriticalSection(&CriticalSection);
return 0;
}
int create_thread(void (*fp)(void), void* sp, int stk_size)
{
DWORD dwThreadID;
(void)sp;
(void)stk_size;
if (nThreads == 256)
return -1;
lpThreads[nThreads++] = CreateThread (NULL,
0,
runthread,
fp,
0,
&dwThreadID);
return 0;
}
void init_threads(void)
{
InitializeCriticalSection(&CriticalSection);
EnterCriticalSection(&CriticalSection);
}

View file

@ -1,23 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
extern HANDLE lpThreads[256];
extern int nPos,
nThreads;
extern CRITICAL_SECTION CriticalSection;

View file

@ -1,8 +0,0 @@
#include <stdio.h>
#include <time.h>
#include <stdbool.h>
/* struct tm defined */
struct tm *get_time(void);
int set_time(const struct tm *tm);
bool valid_time(const struct tm *tm);

View file

@ -1,344 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <fcntl.h>
#include "autoconf.h"
#include "uisw32.h"
#include "resource.h"
#include "button.h"
#include "thread.h"
#include "thread-win32.h"
#include "kernel.h"
#include "sound.h"
#ifndef LR_VGACOLOR /* Should be under MINGW32 builds? */
#define LR_VGACOLOR LR_COLOR
#endif
// extern functions
extern void app_main (void *); // mod entry point
extern void new_key(int key);
extern void sim_tick_tasks(void);
void button_event(int key, bool pressed);
// variables
HWND hGUIWnd; // the GUI window handle
unsigned int uThreadID; // id of mod thread
PBYTE lpKeys;
bool bActive; // window active?
HANDLE hGUIThread; // thread for GUI
#ifdef ROCKBOX_HAS_SIMSOUND
HANDLE hSoundThread; // thread for sound
#endif
bool bIsWinNT; // Windows NT derivate?
bool lcd_display_redraw=true; // Used for player simulator
char having_new_lcd=true; // Used for player simulator
// GUIWndProc
// window proc for GUI simulator
LRESULT CALLBACK GUIWndProc (
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
static HBITMAP hBkgnd;
static HDC hMemDc;
static LARGE_INTEGER persec, tick1, ticknow;
long new_tick;
switch (uMsg)
{
case WM_TIMER:
QueryPerformanceCounter(&ticknow);
new_tick = ((ticknow.QuadPart-tick1.QuadPart)*HZ)/persec.QuadPart;
if (new_tick != current_tick)
{
long i;
for (i = new_tick - current_tick; i > 0; i--)
sim_tick_tasks();
current_tick = new_tick;
}
return TRUE;
case WM_ACTIVATE:
if (LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE)
bActive = true;
else
bActive = false;
return TRUE;
case WM_CREATE:
QueryPerformanceFrequency(&persec);
QueryPerformanceCounter(&tick1);
SetTimer (hWnd, TIMER_EVENT, 1, NULL);
// load background image
hBkgnd = (HBITMAP)LoadImage (GetModuleHandle (NULL),
MAKEINTRESOURCE(IDB_UI), IMAGE_BITMAP, 0, 0, LR_VGACOLOR);
hMemDc = CreateCompatibleDC (GetDC (hWnd));
SelectObject (hMemDc, hBkgnd);
return TRUE;
case WM_SIZING:
{
LPRECT r = (LPRECT)lParam;
char s[256];
int v;
int h_add = GetSystemMetrics (SM_CXSIZEFRAME) * 2 + 4;
int v_add = GetSystemMetrics (SM_CYSIZEFRAME) * 2
+ GetSystemMetrics (SM_CYCAPTION) + 4;
switch (wParam)
{
case WMSZ_BOTTOM:
v = (r->bottom - r->top) / (UI_HEIGHT / 5);
r->bottom = r->top + v * UI_HEIGHT / 5 + v_add;
r->right = r->left + v * UI_WIDTH / 5 + h_add;
break;
case WMSZ_RIGHT:
v = (r->right - r->left) / (UI_WIDTH / 5);
r->bottom = r->top + v * UI_HEIGHT / 5 + v_add;
r->right = r->left + v * UI_WIDTH / 5 + h_add;
break;
case WMSZ_TOP:
v = (r->bottom - r->top) / (UI_HEIGHT / 5);
r->top = r->bottom - v * UI_HEIGHT / 5 - v_add;
r->right = r->left + v * UI_WIDTH / 5 + h_add;
break;
case WMSZ_LEFT:
v = (r->right - r->left) / (UI_WIDTH / 5);
r->bottom = r->top + v * UI_HEIGHT / 5 + v_add;
r->left = r->right - v * UI_WIDTH / 5 - h_add;
break;
case WMSZ_BOTTOMRIGHT:
v = ((r->right - r->left) * UI_HEIGHT
+(r->bottom - r->top) * UI_WIDTH)
/ (2 * UI_WIDTH * UI_HEIGHT / 5);
r->bottom = r->top + v * UI_HEIGHT / 5 + v_add;
r->right = r->left + v * UI_WIDTH / 5 + h_add;
break;
case WMSZ_BOTTOMLEFT:
v = ((r->right - r->left) * UI_HEIGHT
+(r->bottom - r->top) * UI_WIDTH)
/ (2 * UI_WIDTH * UI_HEIGHT / 5);
r->bottom = r->top + v * UI_HEIGHT / 5 + v_add;
r->left = r->right - v * UI_WIDTH / 5 - h_add;
break;
case WMSZ_TOPRIGHT:
v = ((r->right - r->left) * UI_HEIGHT
+(r->bottom - r->top) * UI_WIDTH)
/ (2 * UI_WIDTH * UI_HEIGHT / 5);
r->top = r->bottom - v * UI_HEIGHT / 5 - v_add;
r->right = r->left + v * UI_WIDTH / 5 + h_add;
break;
case WMSZ_TOPLEFT:
v = ((r->right - r->left) * UI_HEIGHT
+(r->bottom - r->top) * UI_WIDTH)
/ (2 * UI_WIDTH * UI_HEIGHT / 5);
r->top = r->bottom - v * UI_HEIGHT / 5 - v_add;
r->left = r->right - v * UI_WIDTH / 5 - h_add;
break;
}
wsprintf (s, UI_TITLE " @%d%%",
(r->right - r->left - h_add + 1) * 100 / UI_WIDTH);
SetWindowText (hWnd, s);
return TRUE;
}
case WM_ERASEBKGND:
{
HDC hDc = (HDC) wParam;
RECT r;
GetClientRect (hWnd, &r);
// blit background image to screen
SetStretchBltMode(hDc, bIsWinNT ? HALFTONE : COLORONCOLOR);
StretchBlt (hDc, 0, 0, r.right, r.bottom,
hMemDc, 0, 0, UI_WIDTH, UI_HEIGHT, SRCCOPY);
return TRUE;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
RECT r;
HDC hDc = BeginPaint (hWnd, &ps);
GetClientRect (hWnd, &r);
// draw lcd screen
SetStretchBltMode(hDc, bIsWinNT ? HALFTONE : COLORONCOLOR);
StretchDIBits (hDc,
UI_LCD_POSX * r.right / UI_WIDTH,
UI_LCD_POSY * r.bottom / UI_HEIGHT,
UI_LCD_WIDTH * r.right / UI_WIDTH,
UI_LCD_HEIGHT * r.bottom / UI_HEIGHT,
0, 0, LCD_WIDTH, LCD_HEIGHT,
bitmap, (BITMAPINFO *) &bmi, DIB_RGB_COLORS,
SRCCOPY);
#ifdef HAVE_REMOTE_LCD
StretchDIBits (hDc,
UI_REMOTE_POSX * r.right / UI_WIDTH,
UI_REMOTE_POSY * r.bottom / UI_HEIGHT,
UI_REMOTE_WIDTH * r.right / UI_WIDTH,
UI_REMOTE_HEIGHT * r.bottom / UI_HEIGHT,
0, 0, LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT,
remote_bitmap, (BITMAPINFO *) &remote_bmi,
DIB_RGB_COLORS, SRCCOPY);
#endif
EndPaint (hWnd, &ps);
return TRUE;
}
case WM_CLOSE:
// close simulator
KillTimer (hWnd, TIMER_EVENT);
hGUIWnd = NULL;
PostQuitMessage (0);
break;
case WM_DESTROY:
// close simulator
hGUIWnd = NULL;
PostQuitMessage (0);
break;
case WM_KEYDOWN:
button_event(wParam, true);
break;
case WM_KEYUP:
button_event(wParam, false);
break;
}
return DefWindowProc (hWnd, uMsg, wParam, lParam);
}
// GUIStartup
// register window class, show window, init GUI
BOOL GUIStartup ()
{
WNDCLASS wc;
// create window class
ZeroMemory (&wc, sizeof(wc));
wc.hbrBackground = GetSysColorBrush (COLOR_WINDOW);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hInstance = GetModuleHandle (NULL);
wc.lpfnWndProc = GUIWndProc;
wc.lpszClassName = "RockBoxUISimulator";
wc.style = CS_HREDRAW | CS_VREDRAW;
if (RegisterClass (&wc) == 0)
return FALSE;
// create window
hGUIWnd = CreateWindowEx (
WS_EX_OVERLAPPEDWINDOW,
"RockBoxUISimulator", UI_TITLE,
WS_VISIBLE | WS_SYSMENU | WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
UI_WIDTH + GetSystemMetrics (SM_CXSIZEFRAME) * 2 +4,
UI_HEIGHT + GetSystemMetrics (SM_CYSIZEFRAME) * 2 +
GetSystemMetrics (SM_CYCAPTION) +4,
NULL, NULL, GetModuleHandle (NULL), NULL);
if (hGUIWnd == NULL)
return FALSE;
simlcdinit();
return TRUE;
}
// GUIDown
// destroy window, unregister window class
int GUIDown ()
{
int i;
DestroyWindow (hGUIWnd);
CloseHandle (hGUIThread);
#ifdef ROCKBOX_HAS_SIMSOUND
CloseHandle (hSoundThread);
#endif
for (i = 0; i < nThreads; i++)
{
CloseHandle (lpThreads[i]);
}
return 0;
}
// GUIMessageLoop
// standard message loop for GUI window
void GUIMessageLoop ()
{
MSG msg;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
// WinMain
// program entry point
int WINAPI WinMain (
HINSTANCE hInstance, // current instance
HINSTANCE hPrevInstance, // previous instance
LPSTR lpCmd, // command line
int nShowCmd // show command
)
{
DWORD dwThreadID;
(void)hInstance;
(void)hPrevInstance;
(void)lpCmd;
(void)nShowCmd;
/* default file mode should be O_BINARY to be consistent with rockbox */
_fmode = _O_BINARY;
bIsWinNT = ((GetVersion() & 0x80000000) == 0);
if (!GUIStartup ())
return 0;
hGUIThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)app_main,
NULL, 0, &dwThreadID);
if (hGUIThread == NULL)
return MessageBox (NULL, "Error creating gui thread!", "Error", MB_OK);
#ifdef ROCKBOX_HAS_SIMSOUND
hSoundThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)
sound_playback_thread, NULL, 0, &dwThreadID);
if (hSoundThread == NULL)
MessageBox (NULL, "Error creating sound thread!", "Warning", MB_OK);
#endif
GUIMessageLoop ();
return GUIDown ();
}

View file

@ -1,168 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Felix Arends
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __UISW32_H__
#define __UISW32_H__
#ifdef _MSC_VER
typedef unsigned short wchar_t;
#define _WCHAR_T_DEFINED
#endif
#include <windows.h>
#include "lcd-win32.h"
#if defined(ARCHOS_RECORDER)
#define UI_TITLE "Jukebox Recorder"
#define UI_WIDTH 270 // width of GUI window
#define UI_HEIGHT 406 // height of GUI window
#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight)
#define UI_LCD_BGCOLORLIGHT 126, 229, 126 // bkgnd color of LCD (backlight)
#define UI_LCD_BLACK 0, 0, 0 // black
#define UI_LCD_POSX 80 // x position of lcd
#define UI_LCD_POSY 104 // y position of lcd (96 for real aspect)
#define UI_LCD_WIDTH 112
#define UI_LCD_HEIGHT 64 // (80 for real aspect)
#elif defined(ARCHOS_PLAYER)
#define UI_TITLE "Jukebox Player"
#define UI_WIDTH 284 // width of GUI window
#define UI_HEIGHT 420 // height of GUI window
#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight)
#define UI_LCD_BGCOLORLIGHT 126, 229, 126 // bkgnd color of LCD (backlight)
#define UI_LCD_BLACK 0, 0, 0 // black
#define UI_LCD_POSX 75 // x position of lcd
#define UI_LCD_POSY 116 // y position of lcd
#define UI_LCD_WIDTH 132
#define UI_LCD_HEIGHT 64
#elif defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2)
#define UI_TITLE "Jukebox FM Recorder"
#define UI_WIDTH 285 // width of GUI window
#define UI_HEIGHT 414 // height of GUI window
#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight)
#define UI_LCD_BGCOLORLIGHT 126, 229, 126 // bkgnd color of LCD (backlight)
#define UI_LCD_BLACK 0, 0, 0 // black
#define UI_LCD_POSX 87 // x position of lcd
#define UI_LCD_POSY 77 // y position of lcd (69 for real aspect)
#define UI_LCD_WIDTH 112
#define UI_LCD_HEIGHT 64 // (80 for real aspect)
#elif defined(ARCHOS_ONDIOSP) || defined(ARCHOS_ONDIOFM)
#define UI_TITLE "Ondio"
#define UI_WIDTH 155 // width of GUI window
#define UI_HEIGHT 334 // height of GUI window
#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight)
#define UI_LCD_BGCOLORLIGHT 90, 145, 90 // bkgnd color of LCD (backlight)
#define UI_LCD_BLACK 0, 0, 0 // black
#define UI_LCD_POSX 21 // x position of lcd
#define UI_LCD_POSY 82 // y position of lcd (74 for real aspect)
#define UI_LCD_WIDTH 112
#define UI_LCD_HEIGHT 64 // (80 for real aspect)
#elif defined(IRIVER_H100_SERIES)
#define UI_TITLE "iriver H1x0"
#define UI_WIDTH 379 // width of GUI window
#define UI_HEIGHT 508 // height of GUI window
#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight)
#define UI_LCD_BGCOLORLIGHT 230, 216, 173 // bkgnd color of LCD (backlight)
#define UI_LCD_BLACK 0, 0, 0 // black
#define UI_LCD_POSX 109 // x position of lcd
#define UI_LCD_POSY 23 // y position of lcd
#define UI_LCD_WIDTH 160
#define UI_LCD_HEIGHT 128
#define UI_REMOTE_BGCOLOR 90, 145, 90 // bkgnd of remote lcd (no bklight)
#define UI_REMOTE_BGCOLORLIGHT 250, 180, 130 // bkgnd of remote lcd (bklight)
#define UI_REMOTE_POSX 50 // x position of remote lcd
#define UI_REMOTE_POSY 403 // y position of remote lcd
#define UI_REMOTE_WIDTH 128
#define UI_REMOTE_HEIGHT 64
#elif defined(IRIVER_H300_SERIES)
#define UI_TITLE "iriver H300"
#define UI_WIDTH 288 // width of GUI window
#define UI_HEIGHT 581 // height of GUI window
/* high-colour */
#define UI_LCD_POSX 26 // x position of lcd
#define UI_LCD_POSY 36 // y position of lcd
#define UI_LCD_WIDTH 220
#define UI_LCD_HEIGHT 176
#define UI_REMOTE_BGCOLOR 90, 145, 90 // bkgnd of remote lcd (no bklight)
#define UI_REMOTE_BGCOLORLIGHT 250, 180, 130 // bkgnd of remote lcd (bklight)
#define UI_REMOTE_POSX 12 // x position of remote lcd
#define UI_REMOTE_POSY 478 // y position of remote lcd
#define UI_REMOTE_WIDTH 128
#define UI_REMOTE_HEIGHT 64
#elif defined(IPOD_4G)
#define UI_TITLE "iPod 4G"
#define UI_WIDTH 196 // width of GUI window
#define UI_HEIGHT 370 // height of GUI window
#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight)
#define UI_LCD_BGCOLORLIGHT 173, 216, 230 // bkgnd color of LCD (backlight)
#define UI_LCD_BLACK 0, 0, 0 // black
#define UI_LCD_POSX 19 // x position of lcd
#define UI_LCD_POSY 14 // y position of lcd
#define UI_LCD_WIDTH 160
#define UI_LCD_HEIGHT 128
#elif defined(IPOD_COLOR)
#define UI_TITLE "iPod Color"
#define UI_WIDTH 261 // width of GUI window
#define UI_HEIGHT 493 // height of GUI window
/* high-colour */
#define UI_LCD_POSX 21 // x position of lcd
#define UI_LCD_POSY 16 // y position of lcd
#define UI_LCD_WIDTH 220
#define UI_LCD_HEIGHT 176
#elif defined(IPOD_NANO)
#define UI_TITLE "iPod Nano"
#define UI_WIDTH 199 // width of GUI window
#define UI_HEIGHT 421 // height of GUI window
/* high-colour */
#define UI_LCD_POSX 13 // x position of lcd
#define UI_LCD_POSY 14 // y position of lcd
#define UI_LCD_WIDTH 176
#define UI_LCD_HEIGHT 132
#elif defined(ARCHOS_GMINI120)
#define UI_TITLE "Gmini 120"
#define UI_WIDTH 370 // width of GUI window
#define UI_HEIGHT 264 // height of GUI window
#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight)
#define UI_LCD_BGCOLORLIGHT 230, 160, 60 // bkgnd color of LCD (backlight)
#define UI_LCD_BLACK 0, 0, 0 // black
#define UI_LCD_POSX 85 // x position of lcd
#define UI_LCD_POSY 61 // y position of lcd (74 for real aspect)
#define UI_LCD_WIDTH 192 // * 1.5
#define UI_LCD_HEIGHT 96 // * 1.5
#endif
#define TIMER_EVENT 0x34928340
extern HWND hGUIWnd; // the GUI window handle
extern unsigned int uThreadID; // id of mod thread
extern bool bActive;
// typedefs
typedef unsigned char uchar;
typedef unsigned int uint32;
#endif // #ifndef __UISW32_H__

View file

@ -1,76 +0,0 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#ifndef __MINGW32__
#include "afxres.h"
#endif
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
#ifndef __MINGW32__
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#endif
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_UI BITMAP "UI256.bmp"
IDI_ICON1 ICON DISCARDABLE "rockbox.ico"
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,21 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 7.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uisw32", "uisw32.vcproj", "{A81A8EFA-647A-427A-BD04-F6B469752E7A}"
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
ConfigName.0 = Debug
ConfigName.1 = Release
EndGlobalSection
GlobalSection(ProjectDependencies) = postSolution
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{A81A8EFA-647A-427A-BD04-F6B469752E7A}.Debug.ActiveCfg = Debug|Win32
{A81A8EFA-647A-427A-BD04-F6B469752E7A}.Debug.Build.0 = Debug|Win32
{A81A8EFA-647A-427A-BD04-F6B469752E7A}.Release.ActiveCfg = Release|Win32
{A81A8EFA-647A-427A-BD04-F6B469752E7A}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

Binary file not shown.

View file

@ -1,280 +0,0 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="uisw32"
ProjectGUID="{A81A8EFA-647A-427A-BD04-F6B469752E7A}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;..\..\apps\recorder&quot;;&quot;..\..\apps&quot;;&quot;..\..\firmware&quot;;&quot;..\win32&quot;;&quot;..\..\firmware\drivers&quot;;&quot;..\..\firmware\common&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;HAVE_RECORDER_KEYPAD;HAVE_LCD_BITMAP;SIMULATOR;SIMULATOR;LCD_PROPFONTS;"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="4"
CompileAs="1"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/uisw32.exe"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/uisw32.pdb"
SubSystem="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
OmitFramePointers="TRUE"
AdditionalIncludeDirectories="&quot;..\..\firmware\drivers&quot;;&quot;..\..\firmware&quot;;&quot;..\..\firmware\common&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;ARCHOS_RECORDER;SIMULATOR;WIN32"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="3"
CompileAs="1"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/uisw32.exe"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
<File
RelativePath="backlight-win32.c">
</File>
<File
RelativePath="..\..\apps\recorder\bmp.c">
</File>
<File
RelativePath="..\..\apps\recorder\bounce.c">
</File>
<File
RelativePath="..\..\apps\recorder\boxes.c">
</File>
<File
RelativePath="button.c">
</File>
<File
RelativePath="..\..\firmware\chartables.c">
</File>
<File
RelativePath="..\..\apps\credits.c">
</File>
<File
RelativePath="debug-win32.c">
</File>
<File
RelativePath="dir-win32.c">
</File>
<File
RelativePath="..\..\apps\games_menu.c">
</File>
<File
RelativePath="..\..\apps\recorder\icons.c">
</File>
<File
RelativePath="..\..\firmware\id3.c">
</File>
<File
RelativePath="kernel.c">
</File>
<File
RelativePath="lcd-win32.c">
</File>
<File
RelativePath="..\..\firmware\drivers\lcd.c">
</File>
<File
RelativePath="..\..\apps\main.c">
</File>
<File
RelativePath="..\..\apps\main_menu.c">
</File>
<File
RelativePath="..\..\apps\menu.c">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
</FileConfiguration>
</File>
<File
RelativePath="mpeg.c">
</File>
<File
RelativePath="panic-win32.c">
</File>
<File
RelativePath="..\..\apps\playlist.c">
</File>
<File
RelativePath="..\..\apps\screensavers_menu.c">
</File>
<File
RelativePath="..\..\apps\settings.c">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\apps\settings_menu.c">
</File>
<File
RelativePath="..\..\apps\recorder\sokoban.c">
</File>
<File
RelativePath="..\..\apps\sound_menu.c">
</File>
<File
RelativePath="..\..\firmware\common\sprintf.c">
</File>
<File
RelativePath="string-win32.c">
</File>
<File
RelativePath="..\..\firmware\common\strtok.c">
</File>
<File
RelativePath="..\..\apps\recorder\tetris.c">
</File>
<File
RelativePath="thread-win32.c">
</File>
<File
RelativePath="..\..\apps\tree.c">
</File>
<File
RelativePath="uisw32.c">
</File>
<File
RelativePath="..\..\apps\wps.c">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc">
<File
RelativePath="dir-win32.h">
</File>
<File
RelativePath="..\x11\dir.h">
</File>
<File
RelativePath="lcd-win32.h">
</File>
<File
RelativePath="..\play.h">
</File>
<File
RelativePath="resource.h">
</File>
<File
RelativePath="..\screensaver.h">
</File>
<File
RelativePath="thread-win32.h">
</File>
<File
RelativePath="..\tree.h">
</File>
<File
RelativePath="uisw32.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
<File
RelativePath="UI256.bmp">
</File>
<File
RelativePath="uisw32.rc">
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,60 +0,0 @@
############################################################################
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
# Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
#
# All files in this archive are subject to the GNU General Public License.
# See the file COPYING in the source tree root for full license agreement.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
############################################################################
SIMCOMMON = ../common
DEPFILE = $(OBJDIR)/dep-sim
RM = rm -f
DEBUG = -g
# Use this for simulator-only files
INCLUDES = -I. -I$(SIMCOMMON) -I$(OBJDIR) -I$(FIRMDIR)/export -I$(APPSDIR) \
-I$(BUILDDIR)
# This sets up 'SRC' based on the files mentioned in SOURCES
include $(TOOLSDIR)/makesrc.inc
OBJS := $(SRC:%.c=$(OBJDIR)/%.o)
DEFINES := -DHAVE_CONFIG_H -DGETTIMEOFDAY_TWO_ARGS -DSIMULATOR \
$(TARGET) -DAPPSVERSION=\"$(VERSION)\" -DMEM=${MEMORYSIZE} $(EXTRA_DEFINES)
SOURCES = $(SRC)
DIRS = .
CFLAGS = $(DEBUG) $(DEFINES) $(INCLUDES) $(GCCOPTS)
OUTFILE = $(BUILDDIR)/libsim.a
all: $(OUTFILE)
include $(TOOLSDIR)/make.inc
clean:
@echo "cleaning sim"
@$(RM) $(OBJS) *~ core $(OUTFILE) $(DEPFILE)
@$(MAKE) -C $(SIMCOMMON) clean
$(OUTFILE): $(OBJS)
@echo "AR $@"
@$(AR) ruv $@ $(OBJS) >/dev/null 2>&1
-include $(DEPFILE)

View file

@ -1,6 +0,0 @@
To build:
$ ../tools/configure
[answer questions]
$ make
$ ./rockboxui

View file

@ -1,14 +0,0 @@
button-x11.c
kernel.c
lcd-x11.c
#if 0 /* if sound is enabled */
oss_sound.c
#endif
resources.c
screenhack.c
thread.c
uibasic.c
visual.c
#if CONFIG_CODEC == SWCODEC
sound.c
#endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

View file

@ -1,2 +0,0 @@
int atoi(const char *);

View file

@ -1,321 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Björn Stenberg
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdlib.h>
#include "config.h"
#include "button.h"
#include "kernel.h"
#include "debug.h"
#include "backlight.h"
#include "misc.h"
#include "X11/keysym.h"
extern int screenhack_handle_events(bool *release);
struct event_queue button_queue;
static int button_state = 0; /* keeps track of pressed keys */
static long lastbtn; /* Last valid button status */
/* how often we check to see if a button is pressed */
#define POLL_FREQUENCY HZ/25
/* how long until repeat kicks in */
#define REPEAT_START 8
/* the speed repeat starts at */
#define REPEAT_INTERVAL_START 4
/* speed repeat finishes at */
#define REPEAT_INTERVAL_FINISH 2
/* mostly copied from real button.c */
void button_read (void);
static void button_tick(void)
{
static int tick = 0;
static int count = 0;
static int repeat_speed = REPEAT_INTERVAL_START;
static int repeat_count = 0;
static bool repeat = false;
static bool post = false;
int diff;
int btn;
/* only poll every X ticks */
if ( ++tick >= POLL_FREQUENCY )
{
button_read();
btn = button_state;
/* Find out if a key has been released */
diff = btn ^ lastbtn;
if(diff && (btn & diff) == 0)
{
queue_post(&button_queue, BUTTON_REL | diff, NULL);
}
else
{
if ( btn )
{
/* normal keypress */
if ( btn != lastbtn )
{
post = true;
repeat = false;
repeat_speed = REPEAT_INTERVAL_START;
}
else /* repeat? */
{
if ( repeat )
{
count--;
if (count == 0) {
post = true;
/* yes we have repeat */
repeat_speed--;
if (repeat_speed < REPEAT_INTERVAL_FINISH)
repeat_speed = REPEAT_INTERVAL_FINISH;
count = repeat_speed;
repeat_count++;
}
}
else
{
if (count++ > REPEAT_START)
{
post = true;
repeat = true;
repeat_count = 0;
/* initial repeat */
count = REPEAT_INTERVAL_START;
}
}
}
if ( post )
{
if (repeat)
{
if (queue_empty(&button_queue))
{
queue_post(&button_queue, BUTTON_REPEAT | btn, NULL);
post = false;
}
}
else
{
queue_post(&button_queue, btn, NULL);
post = false;
}
#ifdef HAVE_REMOTE_LCD
if(btn & BUTTON_REMOTE)
remote_backlight_on();
else
#endif
backlight_on();
}
}
else
{
repeat = false;
count = 0;
}
}
lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT);
tick = 0;
}
}
/*
* Read X keys and translate to rockbox buttons
*/
void button_read (void)
{
int k;
bool release = false; /* is this a release event */
int ev = screenhack_handle_events(&release);
switch (ev)
{
case XK_KP_Left:
case XK_Left:
case XK_KP_4:
k = BUTTON_LEFT;
break;
case XK_KP_Right:
case XK_Right:
case XK_KP_6:
k = BUTTON_RIGHT;
break;
case XK_KP_Up:
case XK_Up:
case XK_KP_8:
#ifdef BUTTON_UP
k = BUTTON_UP;
#elif defined BUTTON_PLAY
k = BUTTON_PLAY;
#endif
break;
case XK_KP_Down:
case XK_Down:
case XK_KP_2:
#ifdef BUTTON_DOWN
k = BUTTON_DOWN;
#elif defined BUTTON_STOP
k = BUTTON_STOP;
#endif
break;
#ifdef BUTTON_ON
case XK_KP_Add:
case XK_Q:
case XK_q:
k = BUTTON_ON;
break;
#endif
#ifdef BUTTON_OFF
case XK_KP_Enter:
case XK_A:
case XK_a:
k = BUTTON_OFF;
break;
#endif
#ifdef BUTTON_F1
case XK_KP_Divide:
case XK_1:
k = BUTTON_F1;
break;
case XK_KP_Multiply:
case XK_2:
k = BUTTON_F2;
break;
case XK_KP_Subtract:
case XK_3:
k = BUTTON_F3;
break;
#elif defined(BUTTON_REC)
case XK_KP_Divide:
case XK_1:
k = BUTTON_REC;
break;
#endif
case XK_KP_Space:
case XK_KP_5:
case XK_KP_Begin:
case XK_space:
#ifdef BUTTON_PLAY
k = BUTTON_PLAY;
#elif defined(BUTTON_SELECT)
k = BUTTON_SELECT;
#endif
break;
#ifdef HAVE_LCD_BITMAP
case XK_5:
if(!release)
screen_dump();
break;
#endif
case XK_KP_Separator:
case XK_KP_Insert:
case XK_Insert:
#ifdef BUTTON_MENU
k = BUTTON_MENU;
#elif defined(BUTTON_MODE)
k = BUTTON_MODE;
#endif
break;
default:
k = 0;
if(ev)
DEBUGF("received ev %d\n", ev);
break;
}
if (release)
button_state &= ~k;
else
button_state |= k;
}
/* Again copied from real button.c... */
long button_get(bool block)
{
struct event ev;
if ( block || !queue_empty(&button_queue) )
{
queue_wait(&button_queue, &ev);
return ev.id;
}
return BUTTON_NONE;
}
long button_get_w_tmo(int ticks)
{
struct event ev;
queue_wait_w_tmo(&button_queue, &ev, ticks);
return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE;
}
void button_init(void)
{
tick_add_task(button_tick);
}
int button_status(void)
{
return lastbtn;
}
void button_clear_queue(void)
{
queue_clear(&button_queue);
}
#ifdef HAS_BUTTON_HOLD
bool button_hold(void) {
/* temp fix for hold button on irivers */
return false;
}
#endif
#ifdef HAS_REMOTE_BUTTON_HOLD
bool remote_button_hold(void) {
/* temp fix for hold button on irivers */
return false;
}
#endif

View file

@ -1,362 +0,0 @@
/* config.h. Generated automatically by configure. */
/* config.h.in --- xscreensaver, Copyright (c) 1998 Jamie Zawinski.
*
* The best way to set these parameters is by running the included `configure'
* script. That examines your system, and generates `config.h' from
* `config.h.in'.
*
* If something goes very wrong, you can edit `config.h' directly, but beware
* that your changes will be lost if you ever run `configure' again.
*/
/* *************************************************************************
CONFIGURING SERVER EXTENSIONS
************************************************************************* */
/* Define this if you have the XReadDisplay extension (I think this is an
SGI-only thing; it's in <X11/extensions/readdisplay.h>.) A few of the
screenhacks will take advantage of this if it's available.
*/
/* #undef HAVE_READ_DISPLAY_EXTENSION */
/* Define this if you have the Iris Video Library (dmedia/vl.h on SGI.)
A few of the screenhacks will take advantage of this if it's available.
*/
/* #undef HAVE_SGI_VIDEO */
/* Define this if you have the XHPDisableReset function (an HP only thing.)
*/
/* #undef HAVE_XHPDISABLERESET */
/* First, some background: there are three distinct server extensions which
* are useful to a screen saver program: they are XIDLE, MIT-SCREEN-SAVER,
* and SCREEN_SAVER.
*
* The XIDLE extension resides in .../contrib/extensions/xidle/ on the X11R5
* contrib tape. This extension lets the client get accurate idle-time
* information from the X server in a potentially more reliable way than by
* simply watching for keyboard and mouse activity. However, the XIDLE
* extension has apparently not been ported to X11R6.
*
* The SCREEN_SAVER extension is found (as far as I know) only in the SGI
* X server, and it exists in all releases since (at least) Irix 5. The
* relevant header file is /usr/include/X11/extensions/XScreenSaver.h.
*
* The similarly-named MIT-SCREEN-SAVER extension came into existence long
* after the SGI SCREEN_SAVER extension was already in use, and resides in
* .../contrib/extensions/screensaver/ on the X11R6 contrib tape. It is
* also found in certain recent X servers built in to NCD X terminals.
*
* The MIT extension does basically the same thing that the XIDLE extension
* does, but there are two things wrong with it: first, because of the way
* the extension was designed, the `fade' option to XScreenSaver will be
* uglier: just before the screen fades out, there will be an unattractive
* flicker to black, because this extension blanks the screen *before*
* telling us that it is time to do so. Second, this extension is known to
* be buggy; on the systems I use, it works, but some people have reported
* X server crashes as a result of using it. XScreenSaver uses this
* extension rather conservatively, because when I tried to use any of its
* more complicated features, I could get it to crash the server at the
* drop of a hat.
*
* In short, the MIT-SCREEN-SAVER extension is a piece of junk. The older
* SGI SCREEN_SAVER extension works great, as does XIDLE. It would be nice
* If those two existed on more systems, that is, would be adopted by the
* X Consortium in favor of their inferior "not-invented-here" entry.
*/
/* Define this if you have the XIDLE extension installed. If you have the
* XIDLE extension, this is recommended. (You have this extension if the
* file /usr/include/X11/extensions/xidle.h exists.) Turning on this flag
* lets XScreenSaver work better with servers which support this extension;
* but it will still work with servers which do not suport it, so it's a good
* idea to compile in support for it if you can.
*/
/* #undef HAVE_XIDLE_EXTENSION */
/* Define this if you have the MIT-SCREEN-SAVER extension installed. See the
* caveats about this extension, above. (It's available if the file
* /usr/include/X11/extensions/scrnsaver.h exists.)
*/
#define HAVE_MIT_SAVER_EXTENSION 1
/* Define this if you have the SGI SCREEN_SAVER extension. This is standard
* on Irix systems, and not available elsewhere.
*/
/* #undef HAVE_SGI_SAVER_EXTENSION */
/* Define this if you have the SGI-VIDEO-CONTROL extension. This is standard
* on Irix systems, and not available elsewhere.
*/
/* #undef HAVE_SGI_VC_EXTENSION */
/* Define this if you have the XDPMS extension. This is standard on
* sufficiently-recent XFree86 systems, and possibly elsewhere. (It's
* available if the file /usr/include/X11/extensions/dpms.h exists.)
*/
/* #undef HAVE_DPMS_EXTENSION */
/* Define this if you have the functions XF86VidModeGetModeLine() and
* XF86VidModeGetViewPort(), in support of virtual desktops where the
* X server's root window is bigger than the actual screen. This is
* an XFree86 thing, and probably doesn't exist elsewhere. (It's
* available if the file /usr/include/X11/extensions/xf86vmode.h exists.)
*/
/* #undef HAVE_XF86VMODE */
/* Define this if you have a Linux-like /proc/interrupts file which can be
* examined to determine when keyboard activity has occurred.
*/
/* #undef HAVE_PROC_INTERRUPTS */
/* *************************************************************************
CONFIGURING GRAPHICS TOOLKITS
************************************************************************* */
/* Define this if you have Motif.
*/
#define HAVE_MOTIF 1
/* Define this if you have Gtk.
*/
/* #undef HAVE_GTK */
/* Define this if you have Athena (-Xaw).
*/
#define HAVE_ATHENA 1
/* Define this if you have Athena, and the version you have includes the
* XawViewportSetCoordinates function in Viewport.h (some old versions of
* the library didn't have this function.)
*/
#define HAVE_XawViewportSetCoordinates 1
/* Define this if you have the XPM library installed. Some of the demos can
* make use of this if it is available.
*/
#define HAVE_XPM 1
/* Define this if you have the Xmu library. This is standard part of X, and
* if your vendor doesn't ship it, you should report that as a bug.
*/
#define HAVE_XMU 1
/* Define this if you have OpenGL. Some of the demos require it, so if you
* don't have it, then those particular demos won't be built. (This won't
* affect the screen saver as a whole.)
*/
/* #undef HAVE_GL */
/* Define this if you have OpenGL, but it's the MesaGL variant. (The
libraries have different names.) (HAVE_GL should be defined too.)
*/
/* #undef HAVE_MESA_GL */
/* Define this if your version of OpenGL has the glBindTexture() routine.
This is the case for OpenGL 1.1, but not for OpenGL 1.0.
*/
/* #undef HAVE_GLBINDTEXTURE */
/* Define this if you have the -lgle and -lmatrix libraries (GL extrusion.)
*/
/* #undef HAVE_GLE */
/* Define this if the `xscreensaver' process itself (the driver process)
should be linked against GL. Most systems won't want this (in particular,
if you're using Linux and/or Mesa, you don't want this) but SGI systems
do want this. It may also be useful on other systems that have serious
GL support -- you only need this if you have a lot of different visuals,
not all of which work with GL programs.
*/
/* #undef DAEMON_USE_GL */
/* Define this if you have the X Shared Memory Extension.
*/
#define HAVE_XSHM_EXTENSION 1
/* Define this if you have the X Double Buffer Extension.
*/
#define HAVE_DOUBLE_BUFFER_EXTENSION 1
/* Some screenhacks like to run an external program to generate random pieces
of text; set this to the one you like ("yow" and "fortune" are the most
likely prospects.) Note that this is just the default; X resources can
be used to override it.
*/
#define ZIPPY_PROGRAM "/usr/local/libexec/emacs/20.4/sparc-sun-solaris2.6/yow"
/* *************************************************************************
CONFIGURING PASSWORD AUTHENTICATION
************************************************************************* */
/* Define this to remove the option of locking the screen at all.
*/
/* #undef NO_LOCKING */
/* Define this if you want to use Kerberos authentication to lock/unlock the
* screen instead of your local password. This currently uses Kerberos V4,
* but a V5 server with V4 compatibility will work. WARNING: DO NOT USE AFS
* string-to-key passwords with this option. This option currently *only*
* works with standard Kerberos des_string_to_key. If your password is an
* AFS password and not a kerberos password, it will not authenticate
* properly. See the comments in driver/kpasswd.c for more information if you
* need it.
*/
/* #undef HAVE_KERBEROS */
/* Define this if you want to use PAM (Pluggable Authentication Modules)
* to lock/unlock the screen, instead of standard /etc/passwd authentication.
*/
/* #undef HAVE_PAM */
/* If PAM is being used, this is the name of the PAM service that xscreensaver
* will authenticate as. The default is "xscreensaver", which means that the
* PAM library will look for an "xscreensaver" line in /etc/pam.conf, or (on
* recent Linux systems) will look for a file called /etc/pam.d/xscreensaver.
* Some systems might already have a PAM installation that is configured for
* xlock, so setting this to "xlock" would also work in that case.
*/
#define PAM_SERVICE_NAME "xscreensaver"
/* Define if you have PAM and pam_strerror() requires two arguments. */
/* #undef PAM_STRERROR_TWO_ARGS */
/* Define this if your system uses `shadow' passwords, that is, the passwords
* live in /etc/shadow instead of /etc/passwd, and one reads them with
* getspnam() instead of getpwnam(). (Note that SCO systems do some random
* other thing; others might as well. See the ifdefs in driver/passwd-pwent.c
* if you're having trouble related to reading passwords.)
*/
#define HAVE_SHADOW_PASSWD 1
/* Define this if your system is Digital or SCO Unix with so-called ``Enhanced
Security'', that is, the passwords live in /tcb/files/auth/<x>/<xyz>
instead of in /etc/passwd, and one reads them with getprpwnam() instead
of getpwnam().
*/
/* #undef HAVE_ENHANCED_PASSWD */
/* Define this if your system is Solaris with ``adjunct'' passwords (this is
the version where one gets at the passwords with getpwanam() instead of
getpwnam().) I haven't tested this one, let me know if it works.
*/
/* #undef HAVE_ADJUNCT_PASSWD */
/* Define this if you are running HPUX with so-called ``Secure Passwords''
(if you have /usr/include/hpsecurity.h, you probably have this.) I
haven't tested this one, let me know if it works.
*/
/* #undef HAVE_HPUX_PASSWD */
/* Define this if you are on a system that supports the VT_LOCKSWITCH and
VT_UNLOCKSWITCH ioctls. If this is defined, then when the screen is
locked, switching to another virtual terminal will also be prevented.
That is, the whole console will be locked, rather than just the VT on
which X is running. (Well, that's the theory anyway -- in practice,
I haven't yet figured out how to make that work.)
*/
/* #undef HAVE_VT_LOCKSWITCH */
/* Define this if you the openlog(), syslog(), and closelog() functions.
This is used for logging failed login attempts.
*/
#define HAVE_SYSLOG 1
/* *************************************************************************
OTHER C ENVIRONMENT JUNK
************************************************************************* */
/* Define this to void* if you're using X11R4 or earlier. */
/* #undef XPointer */
/* Define if you have the nice function. */
#define HAVE_NICE 1
/* Define if you have the setpriority function. */
#define HAVE_SETPRIORITY 1
/* Define to empty if the keyword does not work. */
/* #undef const */
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
#define HAVE_SYS_WAIT_H 1
/* Define as __inline if that's what the C compiler calls it. */
/* #undef inline */
/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef mode_t */
/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef pid_t */
/* Define as the return type of signal handlers (int or void). */
#define RETSIGTYPE void
/* Define to `unsigned' if <sys/types.h> doesn't define. */
/* #undef size_t */
/* Define if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
/* Define if you have the gettimeofday function. */
#define HAVE_GETTIMEOFDAY 1
/* Define if gettimeofday requires two arguments. */
#define GETTIMEOFDAY_TWO_ARGS 1
/* Define if you have the putenv function. */
#define HAVE_PUTENV 1
/* Define if you have the select function. */
#define HAVE_SELECT 1
/* Define if you have the getcwd function. */
#define HAVE_GETCWD 1
/* Define if you have the getcwd function. */
#define HAVE_GETWD 1
/* Define if you have the realpath function. */
#define HAVE_REALPATH 1
/* Define if you have the uname function. */
#define HAVE_UNAME 1
/* Define if you have the fcntl function. */
#define HAVE_FCNTL 1
/* Define if you have the sigaction function. */
#define HAVE_SIGACTION 1
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define if you have the <crypt.h> header file. */
#define HAVE_CRYPT_H 1
/* Define if you have <sys/select.h> that defines fd_set and FD_SET. */
#define HAVE_SYS_SELECT_H 1
/* Define to use sigaction() instead of signal() for SIGCHLD-related activity.
This is necessary at least on SCO OpenServer 5, due to a Unix kernel bug.
*/
/* #undef USE_SIGACTION */
/* Define this if you do pings with a `struct icmp' and a `icmp_id' slot.
*/
#define HAVE_ICMP 1
/* Define this if you do pings with a `struct icmphdr' and a `un.echo.id' slot.
*/
/* #undef HAVE_ICMPHDR */

View file

@ -1,165 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2005 by Jens Arnold
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stddef.h>
#include "kernel.h"
#include "thread.h"
#include "debug.h"
static void (*tick_funcs[MAX_NUM_TICK_TASKS])(void);
int set_irq_level (int level)
{
static int _lv = 0;
return (_lv = level);
}
void queue_init(struct event_queue *q)
{
q->read = 0;
q->write = 0;
}
void queue_delete(struct event_queue *q)
{
(void)q;
}
void queue_wait(struct event_queue *q, struct event *ev)
{
while(q->read == q->write)
{
switch_thread();
}
*ev = q->events[(q->read++) & QUEUE_LENGTH_MASK];
}
void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks)
{
unsigned int timeout = current_tick + ticks;
while(q->read == q->write && TIME_BEFORE( current_tick, timeout ))
{
sleep(1);
}
if(q->read != q->write)
{
*ev = q->events[(q->read++) & QUEUE_LENGTH_MASK];
}
else
{
ev->id = SYS_TIMEOUT;
}
}
void queue_post(struct event_queue *q, long id, void *data)
{
int wr;
int oldlevel;
oldlevel = set_irq_level(15<<4);
wr = (q->write++) & QUEUE_LENGTH_MASK;
q->events[wr].id = id;
q->events[wr].data = data;
set_irq_level(oldlevel);
}
bool queue_empty(const struct event_queue* q)
{
return ( q->read == q->write );
}
void queue_clear(struct event_queue* q)
{
/* fixme: This is potentially unsafe in case we do interrupt-like processing */
q->read = 0;
q->write = 0;
}
void switch_thread (void)
{
yield ();
}
void sim_tick_tasks(void)
{
int i;
/* Run through the list of tick tasks */
for(i = 0;i < MAX_NUM_TICK_TASKS;i++)
{
if(tick_funcs[i])
{
tick_funcs[i]();
}
}
}
int tick_add_task(void (*f)(void))
{
int i;
/* Add a task if there is room */
for(i = 0;i < MAX_NUM_TICK_TASKS;i++)
{
if(tick_funcs[i] == NULL)
{
tick_funcs[i] = f;
return 0;
}
}
DEBUGF("Error! tick_add_task(): out of tasks");
return -1;
}
int tick_remove_task(void (*f)(void))
{
int i;
/* Remove a task if it is there */
for(i = 0;i < MAX_NUM_TICK_TASKS;i++)
{
if(tick_funcs[i] == f)
{
tick_funcs[i] = NULL;
return 0;
}
}
return -1;
}
void mutex_init(struct mutex *m)
{
(void)m;
}
void mutex_lock(struct mutex *m)
{
(void)m;
}
void mutex_unlock(struct mutex *m)
{
(void)m;
}

View file

@ -1,262 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <ctype.h>
#include <time.h>
#include "screenhack.h"
#include "config.h"
#include "debug.h"
/*
* Specific implementations for X11, using the generic LCD API and data.
*/
#include "lcd-x11.h"
#include "lcd-playersim.h"
#if LCD_DEPTH == 2
#define YBLOCK 4
#define ANDBIT 3 /* AND with this to get the color number */
#else
#define YBLOCK 8
#define ANDBIT 1
#endif
extern void screen_resized(int width, int height);
extern bool lcd_display_redraw;
#ifdef HAVE_LCD_BITMAP
#if LCD_DEPTH==16
fb_data lcd_framebuffer_copy[LCD_HEIGHT][LCD_WIDTH*2];
#else
fb_data lcd_framebuffer_copy[LCD_HEIGHT/YBLOCK][LCD_WIDTH];
#endif
void lcd_update (void)
{
/* update a full screen rect */
lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT);
}
void lcd_update_rect(int x_start, int y_start,
int width, int height)
{
int x;
int yline=y_start;
int y;
int p=0;
int bit;
int xmax;
int ymax;
int colors[LCD_WIDTH * LCD_HEIGHT];
struct coordinate points[LCD_WIDTH * LCD_HEIGHT];
unsigned force_mask = lcd_display_redraw ? 0xFF : 0;
#if 0
fprintf(stderr, "%04d: lcd_update_rect(%d, %d, %d, %d)\n",
counter++, x_start, y_start, width, height);
#endif
/* The Y coordinates have to work on even YBLOCK pixel rows */
ymax = (yline + height)/YBLOCK;
yline /= YBLOCK;
xmax = x_start + width;
if(xmax > LCD_WIDTH)
xmax = LCD_WIDTH;
if(ymax >= LCD_HEIGHT/YBLOCK)
ymax = LCD_HEIGHT/YBLOCK-1;
for(; yline <= ymax; yline++) {
y = yline * YBLOCK;
for(x = x_start; x < xmax; x++) {
unsigned char diff = (lcd_framebuffer[yline][x]
^ lcd_framebuffer_copy[yline][x])
| force_mask;
if(diff) {
/* one or more bits/pixels are changed */
unsigned char mask = ANDBIT;
for(bit = 0; bit < YBLOCK; bit++) {
if(diff & mask) {
/* pixel has changed */
unsigned int col = lcd_framebuffer[yline][x] & mask;
#if LCD_DEPTH == 2
colors[p] = col >> (bit * LCD_DEPTH);
#else
colors[p] = col ? 3 : 0;
#endif
points[p].x = x + MARGIN_X;
points[p].y = y + bit + MARGIN_Y;
p++; /* increase the point counter */
}
mask <<= LCD_DEPTH;
}
/* update the copy */
lcd_framebuffer_copy[yline][x] = lcd_framebuffer[yline][x];
}
}
}
dots(colors, &points[0], p);
/* printf("lcd_update_rect: Draws %d pixels, clears %d pixels\n", p, cp);*/
XtAppLock(app);
XSync(dpy,False);
XtAppUnlock(app);
lcd_display_redraw=false;
}
#ifdef LCD_REMOTE_HEIGHT
extern unsigned char lcd_remote_framebuffer[LCD_REMOTE_HEIGHT/8][LCD_REMOTE_WIDTH];
unsigned char lcd_remote_framebuffer_copy[LCD_REMOTE_HEIGHT/8][LCD_REMOTE_WIDTH];
#define REMOTE_START_Y (LCD_HEIGHT + 2*MARGIN_Y)
void lcd_remote_update (void)
{
lcd_remote_update_rect(0, 0, LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT);
}
void lcd_remote_update_rect(int x_start, int y_start,
int width, int height)
{
int x;
int yline=y_start;
int y;
int p=0;
int bit;
int xmax;
int ymax;
struct coordinate points[LCD_REMOTE_WIDTH * LCD_REMOTE_HEIGHT];
int colors[LCD_REMOTE_WIDTH * LCD_REMOTE_HEIGHT];
unsigned force_mask = lcd_display_redraw ? 0xFF : 0;
#if 0
fprintf(stderr, "%04d: lcd_update_rect(%d, %d, %d, %d)\n",
counter++, x_start, y_start, width, height);
#endif
/* The Y coordinates have to work on even 8 pixel rows */
ymax = (yline + height)/8;
yline /= 8;
xmax = x_start + width;
if(xmax > LCD_REMOTE_WIDTH)
xmax = LCD_REMOTE_WIDTH;
if(ymax >= LCD_REMOTE_HEIGHT/8)
ymax = LCD_REMOTE_HEIGHT/8-1;
for(; yline <= ymax; yline++) {
y = yline * 8;
for(x = x_start; x < xmax; x++) {
unsigned char diff = (lcd_remote_framebuffer[yline][x]
^ lcd_remote_framebuffer_copy[yline][x])
| force_mask;
if(diff) {
unsigned char mask = 1;
for(bit = 0; bit < 8; bit++) {
if(diff & mask) {
unsigned int col = lcd_remote_framebuffer[yline][x] & mask;
colors[p] = col ? 3 : 0;
points[p].x = x + MARGIN_X;
points[p].y = y + bit + (REMOTE_START_Y + MARGIN_Y);
p++; /* increase the point counter */
}
mask <<= 1;
}
/* update the copy */
lcd_remote_framebuffer_copy[yline][x] =
lcd_remote_framebuffer[yline][x];
}
}
}
dots(colors, &points[0], p);
/* printf("lcd_update_rect: Draws %d pixels, clears %d pixels\n", p, cp);*/
XtAppLock(app);
XSync(dpy,False);
XtAppUnlock(app);
lcd_display_redraw=false;
}
#endif
#endif
#ifdef HAVE_LCD_CHARCELLS
/* Defined in lcd-playersim.c */
extern void lcd_print_char(int x, int y);
extern unsigned char lcd_buffer[2][11];
extern void drawrect(int color, int x1, int y1, int x2, int y2);
extern unsigned char hardware_buffer_lcd[11][2];
static unsigned char lcd_buffer_copy[11][2];
void lcd_update (void)
{
bool changed=false;
int x, y;
for (y=0; y<2; y++) {
for (x=0; x<11; x++) {
if (lcd_display_redraw ||
lcd_buffer_copy[x][y] != hardware_buffer_lcd[x][y]) {
lcd_buffer_copy[x][y] = hardware_buffer_lcd[x][y];
lcd_print_char(x, y);
changed=true;
}
}
}
if (changed)
{
XtAppLock(app);
XSync(dpy,False);
XtAppUnlock(app);
}
lcd_display_redraw=false;
}
#endif
#ifdef CONFIG_BACKLIGHT
void sim_backlight(int value)
{
DEBUGF("backlight: %s\n", (value > 0) ? "on" : "off");
}
#endif
#ifdef HAVE_REMOTE_LCD
void sim_remote_backlight(int value)
{
DEBUGF("remote backlight: %s\n", (value > 0) ? "on" : "off");
}
#endif

View file

@ -1,26 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#define MARGIN_X 3
#define MARGIN_Y 3
/* include the "real" lcd.h file here */
#include <lcd.h>

View file

@ -1,84 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2002 Dave Chapman
*
* oss_sound - a sound driver for Linux (and others?) OSS audio
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdio.h>
#include <fcntl.h>
#include <sys/soundcard.h>
#include "../common/sound.h"
/* We want to use the "real" open in this file */
#undef open
int init_sound(sound_t* sound) {
sound->fd=open("/dev/dsp", O_WRONLY);
sound->freq=-1;
sound->channels=-1;
if (sound->fd <= 0) {
fprintf(stderr,"Can not open /dev/dsp - simulating sound output\n");
sound->fd=0;
}
}
int config_sound(sound_t* sound, int sound_freq, int channels) {
int format=AFMT_S16_NE;
int setting=0x000C000D; // 12 fragments size 8kb ? WHAT IS THIS?
sound->freq=sound_freq;
sound->channels=channels;
if (sound->fd) {
if (ioctl(sound->fd,SNDCTL_DSP_SETFRAGMENT,&setting)==-1) {
perror("SNDCTL_DSP_SETFRAGMENT");
}
if (ioctl(sound->fd,SNDCTL_DSP_CHANNELS,&channels)==-1) {
perror("SNDCTL_DSP_STEREO");
}
if (channels==0) { fprintf(stderr,"Warning, only mono supported\n"); }
if (ioctl(sound->fd,SNDCTL_DSP_SETFMT,&format)==-1) {
perror("SNDCTL_DSP_SETFMT");
}
if (ioctl(sound->fd,SNDCTL_DSP_SPEED,&sound_freq)==-1) {
perror("SNDCTL_DSP_SPEED");
}
}
}
int output_sound(sound_t* sound,const void* buf, int count) {
unsigned long long t;
if (sound->fd) {
return(write(sound->fd,buf,count));
} else {
t=(unsigned int)(((unsigned int)(1000000/sound->channels)*count)/sound->freq);
// fprintf(stderr,"writing %d bytes at %d frequency - sleeping for %u microseconds\n",count,sound->freq,t);
usleep(t);
return(count);
}
}
void close_sound(sound_t* sound) {
if (sound->fd) close(sound->fd);
sound->fd=-1;
}

View file

@ -1,113 +0,0 @@
/* xscreensaver, Copyright (c) 1992, 1997, 1998
* Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
#include "utils.h"
#include "resources.h"
#include <X11/Xresource.h>
/* Resource functions. Assumes: */
extern char *progname;
extern char *progclass;
extern XrmDatabase db;
#ifndef isupper
# define isupper(c) ((c) >= 'A' && (c) <= 'Z')
#endif
#ifndef _tolower
# define _tolower(c) ((c) - 'A' + 'a')
#endif
char *
get_string_resource (char *res_name, char *res_class)
{
XrmValue value;
char *type;
char full_name [1024], full_class [1024];
strcpy (full_name, progname);
strcat (full_name, ".");
strcat (full_name, res_name);
strcpy (full_class, progclass);
strcat (full_class, ".");
strcat (full_class, res_class);
if (XrmGetResource (db, full_name, full_class, &type, &value))
{
char *str = (char *) malloc (value.size + 1);
strncpy (str, (char *) value.addr, value.size);
str [value.size] = 0;
return str;
}
return 0;
}
Bool
get_boolean_resource (char *res_name, char *res_class)
{
char *tmp, buf [100];
char *s = get_string_resource (res_name, res_class);
char *os = s;
if (! s) return 0;
for (tmp = buf; *s; s++)
*tmp++ = isupper (*s) ? _tolower (*s) : *s;
*tmp = 0;
free (os);
while (*buf &&
(buf[strlen(buf)-1] == ' ' ||
buf[strlen(buf)-1] == '\t'))
buf[strlen(buf)-1] = 0;
if (!strcmp (buf, "on") || !strcmp (buf, "true") || !strcmp (buf, "yes"))
return 1;
if (!strcmp (buf,"off") || !strcmp (buf, "false") || !strcmp (buf,"no"))
return 0;
fprintf (stderr, "%s: %s must be boolean, not %s.\n",
progname, res_name, buf);
return 0;
}
unsigned int
get_pixel_resource (char *res_name, char *res_class,
Display *dpy, Colormap cmap)
{
XColor color;
char *s = get_string_resource (res_name, res_class);
char *s2;
if (!s) goto DEFAULT;
for (s2 = s + strlen(s) - 1; s2 > s; s2--)
if (*s2 == ' ' || *s2 == '\t')
*s2 = 0;
else
break;
if (! XParseColor (dpy, cmap, s, &color))
{
fprintf (stderr, "%s: can't parse color %s\n", progname, s);
goto DEFAULT;
}
if (! XAllocColor (dpy, cmap, &color))
{
fprintf (stderr, "%s: couldn't allocate color %s\n", progname, s);
goto DEFAULT;
}
free (s);
return color.pixel;
DEFAULT:
if (s) free (s);
return ((strlen(res_class) >= 10 &&
!strcmp ("Background", res_class + strlen(res_class) - 10))
? BlackPixel (dpy, DefaultScreen (dpy))
: WhitePixel (dpy, DefaultScreen (dpy)));
}

View file

@ -1,23 +0,0 @@
/* xscreensaver, Copyright (c) 1992, 1997 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
#ifndef __XSCREENSAVER_RESOURCES_H__
#define __XSCREENSAVER_RESOURCES_H__
extern char *get_string_resource (char*,char*);
extern Bool get_boolean_resource (char*,char*);
extern int get_integer_resource (char*,char*);
extern double get_float_resource (char*,char*);
extern unsigned int get_pixel_resource (char*,char*,Display*,Colormap);
extern unsigned int get_minutes_resource (char*,char*);
extern unsigned int get_seconds_resource (char*,char*);
extern int parse_time (const char *string, Bool seconds_default_p,
Bool silent_p);
#endif /* __XSCREENSAVER_RESOURCES_H__ */

View file

@ -1,579 +0,0 @@
/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998
* Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*
* And remember: X Windows is to graphics hacking as roman numerals are to
* the square root of pi.
*/
/* This file contains simple code to open a window or draw on the root.
The idea being that, when writing a graphics hack, you can just link
with this .o to get all of the uninteresting junk out of the way.
- create a procedure `screenhack(dpy, window)'
- create a variable `char *progclass' which names this program's
resource class.
- create a variable `char defaults []' for the default resources, and
null-terminate it.
- create a variable `XrmOptionDescRec options[]' for the command-line,
and null-terminate it.
And that's it...
*/
#include <stdio.h>
#include <X11/Intrinsic.h>
#include <X11/IntrinsicP.h>
#include <X11/CoreP.h>
#include <X11/Shell.h>
#include <X11/StringDefs.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#ifdef __sgi
# include <X11/SGIScheme.h> /* for SgiUseSchemes() */
#endif /* __sgi */
#ifdef HAVE_XMU
# ifndef VMS
# include <X11/Xmu/Error.h>
# else /* VMS */
# include <Xmu/Error.h>
# endif
#else
# include "xmu.h"
#endif
#include "lcd-x11.h"
#include "screenhack.h"
#include "version.h"
#include "vroot.h"
#include "debug.h"
#include "config.h"
#ifndef isupper
# define isupper(c) ((c) >= 'A' && (c) <= 'Z')
#endif
#ifndef _tolower
# define _tolower(c) ((c) - 'A' + 'a')
#endif
#define KEYBOARD_GENERIC \
"Keyboard Rockbox\n" \
"-------- ------------\n" \
"4, Left LEFT\n" \
"6, Right RIGHT\n"
#if CONFIG_KEYPAD == PLAYER_PAD
#define KEYBOARD_SPECIFIC \
"8, Up PLAY\n" \
"2, Down STOP\n" \
"+, Q ON\n" \
"., INS MENU\n"
#elif CONFIG_KEYPAD == RECORDER_PAD
#define KEYBOARD_SPECIFIC \
"8, Up UP\n" \
"2, Down DOWN\n" \
"5, Space PLAY\n" \
"+, Q ON\n" \
"Enter, A OFF\n" \
"/, (1) F1\n" \
"*, (2) F2\n" \
"-, (3) F3\n"
#elif CONFIG_KEYPAD == ONDIO_PAD
#define KEYBOARD_SPECIFIC \
"8, Up UP\n" \
"2, Down DOWN\n" \
"., INS MENU\n" \
"Enter, A OFF\n"
#elif CONFIG_KEYPAD == IRIVER_H100_PAD
#define KEYBOARD_SPECIFIC \
"8, Up UP\n" \
"2, Down DOWN\n" \
"5, Space SELECT\n" \
"+, Q ON\n" \
"Enter, A OFF\n" \
"., INS MODE\n" \
"/, (1) RECORD\n"
#elif CONFIG_KEYPAD == IRIVER_H300_PAD
#define KEYBOARD_SPECIFIC \
"[not written yet]"
#elif CONFIG_KEYPAD == GMINI100_PAD
#define KEYBOARD_SPECIFIC \
"8, Up UP\n" \
"2, Down DOWN\n" \
"5, Space PLAY\n" \
"+, Q ON\n" \
"Enter, A OFF\n" \
"., INS MENU\n"
#elif (CONFIG_KEYPAD == IPOD_4G_PAD)
#define KEYBOARD_SPECIFIC \
"[not written yet]"
#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
#define KEYBOARD_SPECIFIC \
"[not written yet]"
#else
#error "Put your defines here"
#endif
char having_new_lcd=True;
char *progname;
XrmDatabase db;
XtAppContext app;
Display* dpy;
Window window;
Bool mono_p;
static XrmOptionDescRec default_options [] = {
{ "-root", ".root", XrmoptionNoArg, "True" },
{ "-window", ".root", XrmoptionNoArg, "False" },
{ "-mono", ".mono", XrmoptionNoArg, "True" },
{ "-install", ".installColormap", XrmoptionNoArg, "True" },
{ "-noinstall", ".installColormap", XrmoptionNoArg, "False" },
{ "-visual", ".visualID", XrmoptionSepArg, 0 },
{ "-window-id", ".windowID", XrmoptionSepArg, 0 },
{ 0, 0, 0, 0 }
};
static char *default_defaults[] = {
".root: false",
#define GEOMETRY_POSITION 1
"*geometry: 120x68", /* to be replaced anyway */
"*mono: false",
"*installColormap: false",
"*visualID: default",
"*windowID: ",
0
};
extern int display_zoom;
extern long current_tick;
static XrmOptionDescRec *merged_options;
static int merged_options_size;
static char **merged_defaults;
static void merge_options (void)
{
int def_opts_size, opts_size;
int def_defaults_size, defaults_size;
for (def_opts_size = 0; default_options[def_opts_size].option;
def_opts_size++)
;
for (opts_size = 0; options[opts_size].option; opts_size++)
;
merged_options_size = def_opts_size + opts_size;
merged_options = (XrmOptionDescRec *)
malloc ((merged_options_size + 1) * sizeof(*default_options));
memcpy (merged_options, default_options,
(def_opts_size * sizeof(*default_options)));
memcpy (merged_options + def_opts_size, options,
((opts_size + 1) * sizeof(*default_options)));
for (def_defaults_size = 0; default_defaults[def_defaults_size];
def_defaults_size++)
;
for (defaults_size = 0; defaults[defaults_size]; defaults_size++)
;
merged_defaults = (char **)
malloc ((def_defaults_size + defaults_size + 1) * sizeof (*defaults));
memcpy (merged_defaults, default_defaults,
def_defaults_size * sizeof(*defaults));
memcpy (merged_defaults + def_defaults_size, defaults,
(defaults_size + 1) * sizeof(*defaults));
/* This totally sucks. Xt should behave like this by default.
If the string in `defaults' looks like ".foo", change that
to "Progclass.foo".
*/
{
char **s;
for (s = merged_defaults; *s; s++)
if (**s == '.')
{
const char *oldr = *s;
char *newr = (char *) malloc(strlen(oldr)
+ strlen(progclass) + 3);
strcpy (newr, progclass);
strcat (newr, oldr);
*s = newr;
}
}
}
/* Make the X errors print out the name of this program, so we have some
clue which one has a bug when they die under the screensaver.
*/
static int screenhack_ehandler (Display *dpy, XErrorEvent *error)
{
fprintf (stderr, "\nX error in %s:\n", progname);
if (XmuPrintDefaultErrorMessage (dpy, error, stderr))
exit (-1);
else
fprintf (stderr, " (nonfatal.)\n");
return 0;
}
static Bool MapNotify_event_p (Display *dpy, XEvent *event, XPointer window)
{
(void)dpy;
return (event->xany.type == MapNotify &&
event->xvisibility.window == (Window) window);
}
static Atom XA_WM_PROTOCOLS, XA_WM_DELETE_WINDOW;
static void kb_disable_auto_repeat(bool on)
{
XKeyboardControl kb;
kb.auto_repeat_mode = on ? AutoRepeatModeOff : AutoRepeatModeDefault;
XChangeKeyboardControl(dpy, KBAutoRepeatMode, &kb);
}
static void kb_restore_auto_repeat(void) /* registered as an exit handler */
{
kb_disable_auto_repeat(false);
XSync(dpy, false); /* force the X server to process that */
}
/* Dead-trivial event handling.
Exit if the WM_PROTOCOLS WM_DELETE_WINDOW ClientMessage is received.
*/
int screenhack_handle_event(XEvent *event, bool *release)
{
int key=0;
*release = FALSE;
switch (event->xany.type) {
case KeyPress:
{
KeySym keysym;
unsigned char c = 0;
XLookupString (&event->xkey, (char *)&c, 1, &keysym, 0);
key = keysym;
#if 0
DEBUGF("Got keypress: %c (%02x) %x, tick %ld\n", c, c,
event->xkey.keycode, current_tick);
#endif
}
break;
case KeyRelease:
{
KeySym keysym;
unsigned char c = 0;
XLookupString (&event->xkey, (char *)&c, 1, &keysym, 0);
key = keysym;
#if 0
DEBUGF("Got keyrelease: %c (%02x) %x, tick %ld\n", c, c,
event->xkey.keycode, current_tick);
#endif
*release = TRUE;
}
break;
case Expose:
screen_redraw();
break;
case FocusIn:
kb_disable_auto_repeat(true);
break;
case FocusOut:
kb_disable_auto_repeat(false);
break;
case ClientMessage:
if (event->xclient.message_type != XA_WM_PROTOCOLS) {
char *s = XGetAtomName(dpy, event->xclient.message_type);
if (!s)
s = "(null)";
fprintf (stderr, "%s: unknown ClientMessage %s received!\n",
progname, s);
}
else if (event->xclient.data.l[0] != (int)XA_WM_DELETE_WINDOW) {
char *s1 = XGetAtomName(dpy, event->xclient.message_type);
char *s2 = XGetAtomName(dpy, event->xclient.data.l[0]);
if (!s1)
s1 = "(null)";
if (!s2)
s2 = "(null)";
fprintf (stderr, "%s: unknown ClientMessage %s[%s] received!\n",
progname, s1, s2);
}
else {
exit (0);
}
break;
default:
break;
}
return key;
}
int screenhack_handle_events(bool *release)
{
int key=0;
XtAppLock(app);
if(XPending(dpy))
{
XEvent event;
XNextEvent(dpy, &event);
key=screenhack_handle_event(&event, release);
}
XtAppUnlock(app);
return key;
}
static Visual *pick_visual (Screen *screen)
{
#ifdef USE_GL
/* If we're linking against GL (that is, this is the version of
screenhack.o that the GL hacks will use, which is different from the
one that the non-GL hacks will use) then try to pick the "best" visual
by interrogating the GL library instead of by asking Xlib. GL knows
better.
*/
Visual *v = 0;
char *string = get_string_resource ("visualID", "VisualID");
char *s;
if (string)
for (s = string; *s; s++)
if (isupper (*s)) *s = _tolower (*s);
if (!string || !*string ||
!strcmp (string, "gl") ||
!strcmp (string, "best") ||
!strcmp (string, "color") ||
!strcmp (string, "default"))
v = get_gl_visual (screen); /* from ../utils/visual-gl.c */
if (string)
free (string);
if (v)
return v;
#endif /* USE_GL */
return get_visual_resource (screen, "visualID", "VisualID", False);
}
int main (int argc, char **argv)
{
Widget toplevel;
Screen *screen;
Visual *visual;
Colormap cmap;
XEvent event;
char version[255];
sprintf(version,"rockboxui %s",ROCKBOXUI_VERSION);
#ifdef HAVE_LCD_BITMAP
display_zoom=2;
{
char *env=getenv("RECORDER_ZOOM");
if (env) {
display_zoom=atoi(env);
}
}
#else
display_zoom=1;
{
char *env=getenv("PLAYER_ZOOM");
if (env) {
display_zoom=atoi(env);
}
}
#endif
if (argc > 1)
{
int x;
for (x=1; x<argc; x++) {
if (!strcmp("--old_lcd", argv[x])) {
having_new_lcd=FALSE;
printf("Using old LCD layout.\n");
} else if (!strcmp("--zoom", argv[x])) {
x++;
display_zoom=atoi(argv[x]);
printf("Window zoom is %d\n", display_zoom);
} else {
printf("rockboxui\n");
printf("Arguments:\n");
printf(" --old_lcd \t [Player] simulate old playermodel (ROM version<4.51)\n");
printf(" --zoom \t window zoom\n");
printf(KEYBOARD_GENERIC KEYBOARD_SPECIFIC);
exit(0);
}
}
}
{
static char geometry[40];
unsigned int height = (LCD_HEIGHT+2*MARGIN_Y);
#ifdef LCD_REMOTE_HEIGHT
height += (LCD_REMOTE_HEIGHT+2*MARGIN_Y);
#endif
printf("height: %d\n", height);
snprintf(geometry, 40, "*geometry: %dx%d",
(LCD_WIDTH+2*MARGIN_X) * display_zoom, height * display_zoom);
default_defaults[GEOMETRY_POSITION]=geometry;
}
printf(KEYBOARD_GENERIC KEYBOARD_SPECIFIC);
merge_options ();
#ifdef __sgi
/* We have to do this on SGI to prevent the background color from being
overridden by the current desktop color scheme (we'd like our
backgrounds to be black, thanks.) This should be the same as setting
the "*useSchemes: none" resource, but it's not -- if that resource is
present in the `default_defaults' above, it doesn't work, though it
does work when passed as an -xrm arg on the command line. So screw it,
turn them off from C instead.
*/
SgiUseSchemes ("none");
#endif /* __sgi */
XtToolkitThreadInitialize();
toplevel = XtAppInitialize (&app, progclass, merged_options,
merged_options_size, &argc, argv,
merged_defaults, 0, 0);
dpy = XtDisplay (toplevel);
screen = XtScreen (toplevel);
db = XtDatabase (dpy);
XtGetApplicationNameAndClass (dpy, &progname, &progclass);
/* half-assed way of avoiding buffer-overrun attacks. */
if (strlen (progname) >= 100) progname[100] = 0;
XSetErrorHandler (screenhack_ehandler);
XA_WM_PROTOCOLS = XInternAtom (dpy, "WM_PROTOCOLS", False);
XA_WM_DELETE_WINDOW = XInternAtom (dpy, "WM_DELETE_WINDOW", False);
if (CellsOfScreen (DefaultScreenOfDisplay (dpy)) <= 2)
mono_p = True;
{
Boolean def_visual_p;
visual = pick_visual (screen);
if (toplevel->core.width <= 0)
toplevel->core.width = 600;
if (toplevel->core.height <= 0)
toplevel->core.height = 480;
def_visual_p = (visual == DefaultVisualOfScreen (screen));
if (!def_visual_p)
{
unsigned int bg, bd;
Widget new;
cmap = XCreateColormap (dpy, RootWindowOfScreen(screen),
visual, AllocNone);
bg = get_pixel_resource ("background", "Background", dpy, cmap);
bd = get_pixel_resource ("borderColor", "Foreground", dpy, cmap);
new = XtVaAppCreateShell (progname, progclass,
topLevelShellWidgetClass, dpy,
XtNmappedWhenManaged, False,
XtNvisual, visual,
XtNdepth, visual_depth (screen, visual),
XtNwidth, toplevel->core.width,
XtNheight, toplevel->core.height,
XtNcolormap, cmap,
XtNbackground, (Pixel) bg,
XtNborderColor, (Pixel) bd,
XtNinput, True, /* for WM_HINTS */
0);
XtDestroyWidget (toplevel);
toplevel = new;
XtRealizeWidget (toplevel);
window = XtWindow (toplevel);
}
else
{
XtVaSetValues (toplevel,
XtNmappedWhenManaged, False,
XtNinput, True, /* for WM_HINTS */
0);
XtRealizeWidget (toplevel);
window = XtWindow (toplevel);
if (get_boolean_resource ("installColormap", "InstallColormap"))
{
cmap = XCreateColormap (dpy, window,
DefaultVisualOfScreen (XtScreen
(toplevel)),
AllocNone);
XSetWindowColormap (dpy, window, cmap);
}
else
{
cmap = DefaultColormap (dpy, DefaultScreen (dpy));
}
}
XtPopup (toplevel, XtGrabNone);
XtVaSetValues(toplevel, XtNtitle, version, 0);
/* For screenhack_handle_events(): select KeyPress, and
announce that we accept WM_DELETE_WINDOW. */
{
XWindowAttributes xgwa;
XGetWindowAttributes (dpy, window, &xgwa);
XSelectInput (dpy, window,
xgwa.your_event_mask | KeyPressMask | KeyRelease |
ButtonPressMask | ExposureMask | FocusChangeMask );
XChangeProperty (dpy, window, XA_WM_PROTOCOLS, XA_ATOM, 32,
PropModeReplace,
(unsigned char *) &XA_WM_DELETE_WINDOW, 1);
}
}
XSetWindowBackground (dpy, window,
get_pixel_resource ("background", "Background",
dpy, cmap));
XClearWindow (dpy, window);
/* wait for it to be mapped */
XIfEvent (dpy, &event, MapNotify_event_p, (XPointer) window);
XSync (dpy, False);
atexit(kb_restore_auto_repeat);
kb_disable_auto_repeat(true);
screenhack(); /* doesn't return */
return 0;
}

View file

@ -1,52 +0,0 @@
/* xscreensaver, Copyright (c) 1992-1997 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
#ifndef __SCREENHACK_H__
#define __SCREENHACK_H__
#include <stdlib.h>
#include <stdbool.h>
#include "config-x11.h"
#ifdef __hpux
/* Which of the ten billion standards does values.h belong to?
What systems always have it? */
# include <values.h>
#endif
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xresource.h>
#include <X11/Xos.h>
#include <X11/Intrinsic.h>
#include "resources.h"
#include "visual.h"
extern Bool mono_p;
extern char *progname;
extern char *progclass;
extern XrmDatabase db;
extern XrmOptionDescRec options [];
extern char *defaults [];
extern XtAppContext app;
extern Display* dpy;
extern Window window;
extern void screenhack();
extern int screenhack_handle_event(XEvent*, bool *);
extern int screenhack_handle_events(bool *);
extern void screen_redraw();
extern void screen_resized();
#endif /* __SCREENHACK_H__ */

View file

@ -1,140 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2005 by Daniel Stenberg <daniel@haxx.se>
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "autoconf.h"
#ifdef ROCKBOX_HAS_SIMSOUND /* play sound in sim enabled */
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/soundcard.h>
#include "sound.h"
static bool playing = false;
int sim_sound_init(void)
{
int fd;
int pcmbits;
int rc;
int channels;
int rate;
fd = open("/dev/dsp", O_WRONLY);
if(-1 == fd)
return 1;
pcmbits = 16;
rc = ioctl(fd, SOUND_PCM_WRITE_BITS, &pcmbits);
rc = ioctl(fd, SOUND_PCM_READ_BITS, &pcmbits);
channels = 2; /* Number of channels, 1=mono */
rc = ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &channels);
rc = ioctl(fd, SOUND_PCM_READ_CHANNELS, &channels);
rate = 44100; /* Yeah. sampling rate */
rc = ioctl(fd, SOUND_PCM_WRITE_RATE, &rate);
rc = ioctl(fd, SOUND_PCM_READ_RATE, &rate);
return fd;
}
void sim_sound_play(int soundfd, char *buffer, long len)
{
write(soundfd, buffer, len);
}
void sound_playback_thread(void)
{
int soundfd = sim_sound_init();
unsigned char *buf;
long size;
while(-1 == soundfd)
sleep(100000); /* wait forever, can't play sound! */
do {
while(!sound_get_pcm)
/* TODO: fix a fine thread-synch mechanism here */
usleep(10000);
do {
sound_get_pcm(&buf, &size);
if(!size) {
sound_get_pcm = NULL;
break;
}
sim_sound_play(soundfd, (char *)buf, size);
usleep(10000);
} while(size);
} while(1);
}
/* Stubs for PCM audio playback. */
bool pcm_is_playing(void)
{
return playing;
}
void pcm_mute(bool state)
{
(void)state;
}
void pcm_play_pause(bool state)
{
(void)state;
}
bool pcm_is_paused(void)
{
return false;
}
void pcm_play_stop(void)
{
playing = false;
}
void pcm_init(void)
{
}
void (*sound_get_pcm)(unsigned char** start, long* size);
void pcm_play_data(void (*get_more)(unsigned char** start, long* size))
{
sound_get_pcm = get_more;
playing = true;
}
long pcm_get_bytes_waiting(void)
{
return 0;
}
#endif /* ROCKBOX_HAS_SIMSOUND */

View file

@ -1,22 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2005 by Daniel Stenberg <daniel@haxx.se>
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
void sound_playback_thread(void);
extern void (*sound_get_pcm)(unsigned char** start, long* size);

View file

@ -1,12 +0,0 @@
#include <stdarg.h>
#include <stdio.h>
int rockbox_snprintf (char *buf, size_t size, const char *fmt, ...);
int rockbox_vsnprintf (char *buf, int size, const char *fmt, va_list ap);
int rockbox_fprintf (int fd, const char *fmt, ...);
#ifndef NO_REDEFINES_PLEASE
#define snprintf rockbox_snprintf
#define vsnprintf rockbox_vsnprintf
#define fprintf rockbox_fprintf
#endif

View file

@ -1,148 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 Daniel Stenberg
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "autoconf.h"
#include <stdio.h>
#include <pthread.h>
#include "kernel.h"
#include <sys/time.h>
#ifdef ROCKBOX_HAS_SIMSOUND
#include "sound.h"
#endif
long current_tick = 0;
extern void sim_tick_tasks(void);
static void msleep(int msec)
{
struct timeval delay;
delay.tv_sec = msec / 1000;
delay.tv_usec = (msec % 1000) * 1000;
select(0, NULL, NULL, NULL, &delay); /* portable sub-second sleep */
}
/*
* This is not a target thread, so it does not fall under the 1 thread at a
* time thing.
*/
static void update_tick_thread()
{
struct timeval start, now;
long new_tick;
gettimeofday(&start, NULL);
while (1)
{
msleep(5); /* check twice per simulated target tick */
gettimeofday(&now, NULL);
new_tick = (now.tv_sec - start.tv_sec) * HZ
+ (now.tv_usec - start.tv_usec) / (1000000/HZ);
if (new_tick > current_tick)
{
sim_tick_tasks();
current_tick = new_tick;
}
}
}
/*
* We emulate the target threads by using pthreads. We have a mutex that only
* allows one thread at a time to execute. It forces each thread to yield()
* for the other(s) to run.
*/
pthread_mutex_t mp;
void init_threads(void)
{
pthread_t tick_tid;
pthread_mutex_init(&mp, NULL);
/* get mutex to only allow one thread running at a time */
pthread_mutex_lock(&mp);
/* start a tick thread */
pthread_create(&tick_tid, NULL, (void *(*)(void *)) update_tick_thread,
NULL);
#ifdef ROCKBOX_HAS_SIMSOUND /* start thread that plays PCM data */
{
pthread_t sound_tid;
pthread_create(&sound_tid, NULL,
(void *(*)(void *)) sound_playback_thread,
NULL);
}
#endif
}
/*
int pthread_create(pthread_t *new_thread_ID,
const pthread_attr_t *attr,
void * (*start_func)(void *), void *arg);
*/
void yield(void)
{
pthread_mutex_unlock(&mp); /* return */
msleep(1); /* prevent busy loop */
pthread_mutex_lock(&mp); /* get it again */
}
void newfunc(void (*func)(void))
{
pthread_mutex_lock(&mp);
func();
pthread_mutex_unlock(&mp);
}
int create_thread(void (*fp)(void), void* sp, int stk_size)
{
pthread_t tid;
int i;
int error;
/* we really don't care about these arguments */
(void)sp;
(void)stk_size;
error = pthread_create(&tid,
NULL, /* default attributes please */
(void *(*)(void *)) newfunc, /* function to start */
fp /* start argument */);
if(0 != error)
fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
else
fprintf(stderr, "Thread %ld is running\n", (long)tid);
yield();
return error;
}
void sim_sleep(int ticks)
{
pthread_mutex_unlock(&mp); /* return */
msleep((1000/HZ) * ticks);
pthread_mutex_lock(&mp); /* get it again */
}

View file

@ -1,7 +0,0 @@
#include <time.h>
#include <stdbool.h>
/* struct tm defined */
struct tm *get_time(void);
int set_time(const struct tm *tm);
bool valid_time(const struct tm *tm);

View file

@ -1,277 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <ctype.h>
#include <time.h>
#include "config.h"
#include "screenhack.h"
#include "version.h"
#include "lcd-x11.h"
#include "lcd-playersim.h"
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
#define PROGNAME "rockboxui"
/* -- -- */
GC draw_gc;
static Colormap cmap;
int display_zoom=1;
bool lcd_display_redraw=true;
XrmOptionDescRec options [] = {
/* { "-subtractive", ".additive", XrmoptionNoArg, "false" }, */
{ "-server", ".server", XrmoptionSepArg, 0 },
{ "-help", ".help", XrmoptionNoArg, "false" },
{ 0, 0, 0, 0 }
};
char *progclass = "rockboxui";
#ifdef IRIVER_H100_SERIES
#define BGCOLOR "lightblue"
#elif defined ARCHOS_GMINI120
#define BGCOLOR "royalblue"
#else
#define BGCOLOR "lightgreen"
#endif
char *defaults [] = {
".background: " BGCOLOR,
".foreground: black",
"*help: false",
0
};
static XColor getcolor[4];
/* set a range of bitmap indices to a gradient from startcolour to endcolour
inherited from the win32 sim code by Jens Arnold */
static void lcdcolors(int index, int count, XColor *start, XColor *end)
{
int i;
count--;
for (i = 0; i <= count; i++)
{
getcolor[i+index].red = start->red
+ (end->red - start->red) * i / count;
getcolor[i+index].green = start->green
+ (end->green - start->green) * i / count;
getcolor[i+index].blue = start->blue
+ (end->blue - start->blue) * i / count;
XAllocColor (dpy, cmap, &getcolor[i+index]);
}
}
void init_window ()
{
XGCValues gcv;
XWindowAttributes xgwa;
XGetWindowAttributes (dpy, window, &xgwa);
XColor bg;
XColor fg;
cmap = xgwa.colormap;
XParseColor (dpy, cmap, BGCOLOR, &bg);
XParseColor (dpy, cmap, "black", &fg);
getcolor[0] = bg;
getcolor[1] = bg;
getcolor[2] = bg;
getcolor[3] = bg;
lcdcolors(0, 4, &bg, &fg);
#if 0
for(i=0; i<4; i++) {
printf("color %d: %d %d %d\n",
i,
getcolor[i].red,
getcolor[i].green,
getcolor[i].blue);
}
#endif
gcv.function = GXxor;
gcv.foreground = getcolor[3].pixel;
draw_gc = XCreateGC (dpy, window, GCForeground, &gcv);
screen_resized(LCD_WIDTH, LCD_HEIGHT);
}
void screen_resized(int width, int height)
{
int maxx, maxy;
maxx = width;
maxy = height;
XtAppLock(app);
XSetForeground(dpy, draw_gc, getcolor[0].pixel);
XFillRectangle(dpy, window, draw_gc, 0, 0, width*display_zoom,
height*display_zoom);
XtAppUnlock(app);
screen_redraw();
}
void drawrect(int color, int x1, int y1, int x2, int y2)
{
XtAppLock(app);
XSetForeground(dpy, draw_gc, getcolor[color].pixel);
XFillRectangle(dpy, window, draw_gc, x1*display_zoom, y1*display_zoom,
x2*display_zoom, y2*display_zoom);
XtAppUnlock(app);
}
static void help(void)
{
printf(PROGNAME " " ROCKBOXUI_VERSION " " __DATE__ "\n"
"usage: " PROGNAME "\n");
}
static void drawline(int color, int x1, int y1, int x2, int y2)
{
XtAppLock(app);
XSetForeground(dpy, draw_gc, getcolor[color].pixel);
XDrawLine(dpy, window, draw_gc,
(int)(x1*display_zoom),
(int)(y1*display_zoom),
(int)(x2*display_zoom),
(int)(y2*display_zoom));
XtAppUnlock(app);
}
void dots(int *colors, struct coordinate *points, int count)
{
int color;
XtAppLock(app);
while (count--) {
color = colors[count];
XSetForeground(dpy, draw_gc, getcolor[color].pixel);
XFillRectangle(dpy, window, draw_gc,
points[count].x*display_zoom,
points[count].y*display_zoom,
display_zoom,
display_zoom);
}
XtAppUnlock(app);
}
/* this is where the applicaton starts */
extern void app_main(void);
void screenhack()
{
Bool helpme;
/* This doesn't work, but I don't know why (Daniel 1999-12-01) */
helpme = get_boolean_resource ("help", "Boolean");
if(helpme)
help();
printf(PROGNAME " " ROCKBOXUI_VERSION " (" __DATE__ ")\n");
init_window();
screen_redraw();
app_main();
}
/* used for the player sim */
void drawdots(int color, struct coordinate *points, int count)
{
XtAppLock(app);
XSetForeground(dpy, draw_gc, getcolor[color==0?0:3].pixel);
while (count--) {
XFillRectangle(dpy, window, draw_gc,
points[count].x*display_zoom,
points[count].y*display_zoom,
display_zoom,
display_zoom);
}
XtAppUnlock(app);
}
/* used for the player sim */
void drawrectangles(int color, struct rectangle *points, int count)
{
XtAppLock(app);
XSetForeground(dpy, draw_gc, getcolor[color==0?0:3].pixel);
while (count--) {
XFillRectangle(dpy, window, draw_gc,
points[count].x*display_zoom,
points[count].y*display_zoom,
points[count].width*display_zoom,
points[count].height*display_zoom);
}
XtAppUnlock(app);
}
void screen_redraw()
{
/* draw a border around the screen */
#define X1 0
#define Y1 0
#define X2 (LCD_WIDTH + 2*MARGIN_X - 1)
#define Y2 (LCD_HEIGHT + 2*MARGIN_Y - 1)
drawline(1, X1, Y1, X2, Y1);
drawline(1, X2, Y1, X2, Y2);
drawline(1, X1, Y2, X2, Y2);
drawline(1, X1, Y1, X1, Y2);
lcd_display_redraw = true;
lcd_update();
#ifdef LCD_REMOTE_HEIGHT
/* draw a border around the remote LCD screen */
#define RX1 0
#define RY1 (Y2 + 1)
#define RX2 (LCD_REMOTE_WIDTH + 2*MARGIN_X - 1)
#define RY2 (RY1 + LCD_REMOTE_HEIGHT + 2*MARGIN_Y - 1)
drawline(1, RX1, RY1, RX2, RY1);
drawline(1, RX2, RY1, RX2, RY2);
drawline(1, RX1, RY2, RX2, RY2);
drawline(1, RX1, RY1, RX1, RY2);
lcd_display_redraw = true;
lcd_remote_update();
#endif
}

View file

@ -1,22 +0,0 @@
/* xscreensaver, Copyright (c) 1997 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
#ifdef HAVE_CONFIG_H
# include "config-x11.h"
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <X11/Xlib.h>
#include <X11/Xos.h>

View file

@ -1 +0,0 @@
#define ROCKBOXUI_VERSION "0.2"

View file

@ -1,544 +0,0 @@
/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999
* by Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
/* This file contains some code for intelligently picking the best visual
(where "best" is biased in the direction of either: high color counts;
or: having writable color cells...)
*/
#include "utils.h"
#include "resources.h" /* for get_string_resource() */
#include "visual.h"
#include <X11/Xutil.h>
extern char *progname;
#ifndef isupper
# define isupper(c) ((c) >= 'A' && (c) <= 'Z')
#endif
#ifndef _tolower
# define _tolower(c) ((c) - 'A' + 'a')
#endif
static Visual *pick_best_visual (Screen *, Bool, Bool);
static Visual *pick_mono_visual (Screen *);
static Visual *pick_best_visual_of_class (Screen *, int);
static Visual *pick_best_gl_visual (Screen *);
static Visual *id_to_visual (Screen *, int);
static Visual *id_to_visual (Screen *screen, int id);
#define DEFAULT_VISUAL -1
#define BEST_VISUAL -2
#define MONO_VISUAL -3
#define GRAY_VISUAL -4
#define COLOR_VISUAL -5
#define GL_VISUAL -6
#define SPECIFIC_VISUAL -7
Visual *
get_visual (Screen *screen, const char *string, Bool prefer_writable_cells,
Bool verbose_p)
{
char *v = (string ? strdup(string) : 0);
char c, *tmp;
int vclass;
unsigned long id;
Visual *result = 0;
if (v)
for (tmp = v; *tmp; tmp++)
if (isupper (*tmp)) *tmp = _tolower (*tmp);
if (!v || !*v) vclass = BEST_VISUAL;
else if (!strcmp (v, "default")) vclass = DEFAULT_VISUAL;
else if (!strcmp (v, "best")) vclass = BEST_VISUAL;
else if (!strcmp (v, "mono")) vclass = MONO_VISUAL;
else if (!strcmp (v, "monochrome")) vclass = MONO_VISUAL;
else if (!strcmp (v, "gray")) vclass = GRAY_VISUAL;
else if (!strcmp (v, "grey")) vclass = GRAY_VISUAL;
else if (!strcmp (v, "color")) vclass = COLOR_VISUAL;
else if (!strcmp (v, "gl")) vclass = GL_VISUAL;
else if (!strcmp (v, "staticgray")) vclass = StaticGray;
else if (!strcmp (v, "staticcolor")) vclass = StaticColor;
else if (!strcmp (v, "truecolor")) vclass = TrueColor;
else if (!strcmp (v, "grayscale")) vclass = GrayScale;
else if (!strcmp (v, "greyscale")) vclass = GrayScale;
else if (!strcmp (v, "pseudocolor")) vclass = PseudoColor;
else if (!strcmp (v, "directcolor")) vclass = DirectColor;
else if (1 == sscanf (v, " %ld %c", &id, &c)) vclass = SPECIFIC_VISUAL;
else if (1 == sscanf (v, " 0x%lx %c", &id, &c)) vclass = SPECIFIC_VISUAL;
else
{
fprintf (stderr, "%s: unrecognized visual \"%s\".\n", progname, v);
vclass = DEFAULT_VISUAL;
}
if (vclass == DEFAULT_VISUAL)
result = DefaultVisualOfScreen (screen);
else if (vclass == BEST_VISUAL)
result = pick_best_visual (screen, prefer_writable_cells, False);
else if (vclass == MONO_VISUAL)
{
result = pick_mono_visual (screen);
if (!result && verbose_p)
fprintf (stderr, "%s: no monochrome visuals.\n", progname);
}
else if (vclass == GRAY_VISUAL)
{
if (prefer_writable_cells)
result = pick_best_visual_of_class (screen, GrayScale);
if (!result)
result = pick_best_visual_of_class (screen, StaticGray);
if (!result)
result = pick_best_visual_of_class (screen, GrayScale);
if (!result && verbose_p)
fprintf (stderr, "%s: no GrayScale or StaticGray visuals.\n",
progname);
}
else if (vclass == COLOR_VISUAL)
{
int class;
/* First see if the default visual will do. */
result = DefaultVisualOfScreen (screen);
class = visual_class(screen, result);
if (class != TrueColor &&
class != PseudoColor &&
class != DirectColor &&
class != StaticColor)
result = 0;
if (result && visual_depth(screen, result) <= 1)
result = 0;
/* Else, find the best non-default color visual */
if (!result)
result = pick_best_visual (screen, prefer_writable_cells, True);
if (!result && verbose_p)
fprintf (stderr, "%s: no color visuals.\n", progname);
}
else if (vclass == GL_VISUAL)
{
Visual *visual = pick_best_gl_visual (screen);
if (visual)
result = visual;
else if (verbose_p)
fprintf (stderr, "%s: no visual suitable for GL.\n", progname);
}
else if (vclass == SPECIFIC_VISUAL)
{
result = id_to_visual (screen, id);
if (!result && verbose_p)
fprintf (stderr, "%s: no visual with id 0x%x.\n", progname,
(unsigned int) id);
}
else
{
Visual *visual = pick_best_visual_of_class (screen, vclass);
if (visual)
result = visual;
else if (verbose_p)
fprintf (stderr, "%s: no visual of class %s.\n", progname, v);
}
if (v) free (v);
return result;
}
Visual *
get_visual_resource (Screen *screen, char *name, char *class,
Bool prefer_writable_cells)
{
char *string = get_string_resource (name, class);
Visual *v = get_visual (screen, string, prefer_writable_cells, True);
if (string)
free(string);
if (v)
return v;
else
return DefaultVisualOfScreen (screen);
}
static Visual *
pick_best_visual (Screen *screen, Bool prefer_writable_cells, Bool color_only)
{
Visual *visual;
if (!prefer_writable_cells)
{
/* If we don't prefer writable cells, then the "best" visual is the one
on which we can allocate the largest range and number of colors.
Therefore, a TrueColor visual which is at least 16 bits deep is best.
(The assumption here being that a TrueColor of less than 16 bits is
really just a PseudoColor visual with a pre-allocated color cube.)
The next best thing is a PseudoColor visual of any type. After that
come the non-colormappable visuals, and non-color visuals.
*/
if ((visual = pick_best_visual_of_class (screen, TrueColor)) &&
visual_depth (screen, visual) >= 16)
return visual;
}
#define TRY_CLASS(CLASS) \
if ((visual = pick_best_visual_of_class (screen, CLASS)) && \
(!color_only || visual_depth(screen, visual) > 1)) \
return visual
TRY_CLASS(PseudoColor);
TRY_CLASS(TrueColor);
TRY_CLASS(DirectColor);
TRY_CLASS(StaticColor);
if (!color_only)
{
TRY_CLASS(GrayScale);
TRY_CLASS(StaticGray);
}
#undef TRY_CLASS
visual = DefaultVisualOfScreen (screen);
if (!color_only || visual_depth(screen, visual) > 1)
return visual;
else
return 0;
}
static Visual *
pick_mono_visual (Screen *screen)
{
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count;
vi_in.depth = 1;
vi_in.screen = screen_number (screen);
vi_out = XGetVisualInfo (dpy, (VisualDepthMask | VisualScreenMask),
&vi_in, &out_count);
if (vi_out)
{
Visual *v = (out_count > 0 ? vi_out [0].visual : 0);
if (v && vi_out[0].depth != 1)
v = 0;
XFree ((char *) vi_out);
return v;
}
else
return 0;
}
static Visual *
pick_best_visual_of_class (Screen *screen, int visual_class)
{
/* The best visual of a class is the one which on which we can allocate
the largest range and number of colors, which means the one with the
greatest depth and number of cells.
(But actually, for XDaliClock, all visuals of the same class are
probably equivalent - either we have writable cells or we don't.)
*/
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count;
vi_in.class = visual_class;
vi_in.screen = screen_number (screen);
vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask),
&vi_in, &out_count);
if (vi_out)
{
/* choose the 'best' one, if multiple */
int i, best;
Visual *visual;
/* for (i = 0, best = 0; i < out_count; i++) */
for (i = out_count-1, best = i; i >= 0; i--) /* go backwards */
/* It's better if it's deeper, or if it's the same depth with
more cells (does that ever happen? Well, it could...) */
if ((vi_out [i].depth > vi_out [best].depth) ||
((vi_out [i].depth == vi_out [best].depth) &&
(vi_out [i].colormap_size > vi_out [best].colormap_size)))
best = i;
visual = (best < out_count ? vi_out [best].visual : 0);
XFree ((char *) vi_out);
return visual;
}
else
return 0;
}
static Visual *
pick_best_gl_visual (Screen *screen)
{
/* The best visual for GL is a TrueColor visual that is half as deep as
the screen. If such a thing doesn't exist, then TrueColor is best.
Failing that, the deepest available color visual is best.
Compare this function to get_gl_visual() in visual-gl.c.
This function tries to find the best GL visual using Xlib calls,
whereas that function does the same thing using GLX calls.
*/
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count;
Visual *result = 0;
int ndepths = 0;
int *depths = XListDepths (dpy, screen_number (screen), &ndepths);
int screen_depth = depths[ndepths];
XFree (depths);
vi_in.class = TrueColor;
vi_in.screen = screen_number (screen);
vi_in.depth = screen_depth / 2;
vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask |
VisualDepthMask),
&vi_in, &out_count);
if (out_count > 0)
result = vi_out[0].visual;
if (vi_out)
XFree ((char *) vi_out);
if (!result && screen_depth > 24)
{
/* If it's a 32-deep screen and we didn't find a depth-16 visual,
see if there's a depth-12 visual. */
vi_in.class = TrueColor;
vi_in.screen = screen_number (screen);
vi_in.depth = 12;
vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask |
VisualDepthMask),
&vi_in, &out_count);
if (out_count > 0)
result = vi_out[0].visual;
}
if (!result)
/* No half-depth TrueColor? Ok, try for any TrueColor (the deepest.) */
result = pick_best_visual_of_class (screen, TrueColor);
if (!result)
/* No TrueColor? Ok, try for anything. */
result = pick_best_visual (screen, False, False);
return result;
}
static Visual *
id_to_visual (Screen *screen, int id)
{
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count;
vi_in.screen = screen_number (screen);
vi_in.visualid = id;
vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualIDMask),
&vi_in, &out_count);
if (vi_out)
{
Visual *v = vi_out[0].visual;
XFree ((char *) vi_out);
return v;
}
return 0;
}
int
visual_depth (Screen *screen, Visual *visual)
{
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count, d;
vi_in.screen = screen_number (screen);
vi_in.visualid = XVisualIDFromVisual (visual);
vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
&vi_in, &out_count);
if (! vi_out) abort ();
d = vi_out [0].depth;
XFree ((char *) vi_out);
return d;
}
#if 0
/* You very probably don't want to be using this.
Pixmap depth doesn't refer to the depths of pixmaps, but rather, to
the depth of protocol-level on-the-wire pixmap data, that is, XImages.
To get this info, you should be looking at XImage->bits_per_pixel
instead. (And allocating the data for your XImage structures by
multiplying ximage->bytes_per_line by ximage->height.)
*/
int
visual_pixmap_depth (Screen *screen, Visual *visual)
{
Display *dpy = DisplayOfScreen (screen);
int vdepth = visual_depth (screen, visual);
int pdepth = vdepth;
int i, pfvc = 0;
XPixmapFormatValues *pfv = XListPixmapFormats (dpy, &pfvc);
/* Return the first matching depth in the pixmap formats. If there are no
matching pixmap formats (which shouldn't be able to happen at all) then
return the visual depth instead. */
for (i = 0; i < pfvc; i++)
if (pfv[i].depth == vdepth)
{
pdepth = pfv[i].bits_per_pixel;
break;
}
if (pfv)
XFree (pfv);
return pdepth;
}
#endif /* 0 */
int
visual_class (Screen *screen, Visual *visual)
{
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count, c;
vi_in.screen = screen_number (screen);
vi_in.visualid = XVisualIDFromVisual (visual);
vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
&vi_in, &out_count);
if (! vi_out) abort ();
c = vi_out [0].class;
XFree ((char *) vi_out);
return c;
}
Bool
has_writable_cells (Screen *screen, Visual *visual)
{
switch (visual_class (screen, visual))
{
case GrayScale: /* Mappable grays. */
case PseudoColor: /* Mappable colors. */
return True;
case StaticGray: /* Fixed grays. */
case TrueColor: /* Fixed colors. */
case StaticColor: /* (What's the difference again?) */
case DirectColor: /* DirectColor visuals are like TrueColor, but have
three colormaps - one for each component of RGB.
Screw it. */
return False;
default:
abort();
return False;
}
}
void
describe_visual (FILE *f, Screen *screen, Visual *visual, Bool private_cmap_p)
{
char n[10];
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count;
vi_in.screen = screen_number (screen);
vi_in.visualid = XVisualIDFromVisual (visual);
vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualIDMask),
&vi_in, &out_count);
if (! vi_out) abort ();
if (private_cmap_p)
sprintf(n, "%3d", vi_out->colormap_size);
else
strcpy(n, "default");
fprintf (f, "0x%02x (%s depth: %2d, cmap: %s)\n",
(unsigned int) vi_out->visualid,
(vi_out->class == StaticGray ? "StaticGray, " :
vi_out->class == StaticColor ? "StaticColor," :
vi_out->class == TrueColor ? "TrueColor, " :
vi_out->class == GrayScale ? "GrayScale, " :
vi_out->class == PseudoColor ? "PseudoColor," :
vi_out->class == DirectColor ? "DirectColor," :
"UNKNOWN: "),
vi_out->depth, n);
XFree ((char *) vi_out);
}
int
screen_number (Screen *screen)
{
Display *dpy = DisplayOfScreen (screen);
int i;
for (i = 0; i < ScreenCount (dpy); i++)
if (ScreenOfDisplay (dpy, i) == screen)
return i;
abort ();
return 0;
}
int
visual_cells (Screen *screen, Visual *visual)
{
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
int out_count, c;
vi_in.screen = screen_number (screen);
vi_in.visualid = XVisualIDFromVisual (visual);
vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
&vi_in, &out_count);
if (! vi_out) abort ();
c = vi_out [0].colormap_size;
XFree ((char *) vi_out);
return c;
}
Visual *
find_similar_visual(Screen *screen, Visual *old_visual)
{
Display *dpy = DisplayOfScreen (screen);
XVisualInfo vi_in, *vi_out;
Visual *result = 0;
int out_count;
vi_in.screen = screen_number (screen);
vi_in.class = visual_class (screen, old_visual);
vi_in.depth = visual_depth (screen, old_visual);
/* Look for a visual of the same class and depth.
*/
vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualClassMask |
VisualDepthMask),
&vi_in, &out_count);
if (vi_out && out_count > 0)
result = vi_out[0].visual;
if (vi_out) XFree (vi_out);
vi_out = 0;
/* Failing that, look for a visual of the same class.
*/
if (!result)
{
vi_out = XGetVisualInfo (dpy, (VisualScreenMask | VisualClassMask),
&vi_in, &out_count);
if (vi_out && out_count > 0)
result = vi_out[0].visual;
if (vi_out) XFree (vi_out);
vi_out = 0;
}
/* Failing that, return the default visual. */
if (!result)
result = DefaultVisualOfScreen (screen);
return result;
}

View file

@ -1,29 +0,0 @@
/* xscreensaver, Copyright (c) 1993-1999 by Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
#ifndef __VISUAL_H__
#define __VISUAL_H__
extern Visual *get_visual (Screen *, const char *name, Bool, Bool);
extern Visual *get_visual_resource (Screen *, char *, char *, Bool);
extern int visual_depth (Screen *, Visual *);
/* extern int visual_pixmap_depth (Screen *, Visual *); */
extern int visual_class (Screen *, Visual *);
extern int visual_cells (Screen *, Visual *);
extern int screen_number (Screen *);
extern Visual *find_similar_visual (Screen *, Visual *old);
extern void describe_visual (FILE *f, Screen *, Visual *, Bool private_cmap_p);
extern Visual *get_overlay_visual (Screen *, unsigned long *pixel_return);
extern Bool has_writable_cells (Screen *screen, Visual *visual);
Visual *get_gl_visual (Screen *screen);
#endif /* __VISUAL_H__ */

View file

@ -1,126 +0,0 @@
/*****************************************************************************/
/** Copyright 1991 by Andreas Stolcke **/
/** Copyright 1990 by Solbourne Computer Inc. **/
/** Longmont, Colorado **/
/** **/
/** All Rights Reserved **/
/** **/
/** Permission to use, copy, modify, and distribute this software and **/
/** its documentation for any purpose and without fee is hereby **/
/** granted, provided that the above copyright notice appear in all **/
/** copies and that both that copyright notice and this permis- **/
/** sion notice appear in supporting documentation, and that the **/
/** name of Solbourne not be used in advertising **/
/** in publicity pertaining to distribution of the software without **/
/** specific, written prior permission. **/
/** **/
/** ANDREAS STOLCKE AND SOLBOURNE COMPUTER INC. DISCLAIMS ALL WARRANTIES **/
/** WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF **/
/** MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ANDREAS STOLCKE **/
/** OR SOLBOURNE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL **/
/** DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/
/** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/
/** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/
/** OR PERFORMANCE OF THIS SOFTWARE. **/
/*****************************************************************************/
/*
* vroot.h -- Virtual Root Window handling header file
*
* This header file redefines the X11 macros RootWindow and DefaultRootWindow,
* making them look for a virtual root window as provided by certain `virtual'
* window managers like swm and tvtwm. If none is found, the ordinary root
* window is returned, thus retaining backward compatibility with standard
* window managers.
* The function implementing the virtual root lookup remembers the result of
* its last invocation to avoid overhead in the case of repeated calls
* on the same display and screen arguments.
* The lookup code itself is taken from Tom LaStrange's ssetroot program.
*
* Most simple root window changing X programs can be converted to using
* virtual roots by just including
*
* #include <X11/vroot.h>
*
* after all the X11 header files. It has been tested on such popular
* X clients as xphoon, xfroot, xloadimage, and xaqua.
* It also works with the core clients xprop, xwininfo, xwd, and editres
* (and is necessary to get those clients working under tvtwm).
* It does NOT work with xsetroot; get the xsetroot replacement included in
* the tvtwm distribution instead.
*
* Andreas Stolcke <stolcke@ICSI.Berkeley.EDU>, 9/7/90
* - replaced all NULL's with properly cast 0's, 5/6/91
* - free children list (suggested by Mark Martin <mmm@cetia.fr>), 5/16/91
* - include X11/Xlib.h and support RootWindowOfScreen, too 9/17/91
*/
#ifndef _VROOT_H_
#define _VROOT_H_
#if !defined(lint) && !defined(SABER)
static const char vroot_rcsid[] = "#Id: vroot.h,v 1.4 1991/09/30 19:23:16 stolcke Exp stolcke #";
#endif
#include <X11/X.h>
#include <X11/Xatom.h>
#include <X11/Xlib.h>
static Window
#ifdef __STDC__ /* ANSIfication added by jwz, to avoid superfluous warnings. */
VirtualRootWindowOfScreen(Screen *screen)
#else /* !__STDC__ */
VirtualRootWindowOfScreen(screen) Screen *screen;
#endif /* !__STDC__ */
{
static Screen *save_screen = (Screen *)0;
static Window root = (Window)0;
if (screen != save_screen) {
Display *dpy = DisplayOfScreen(screen);
Atom __SWM_VROOT = None;
unsigned int i;
Window rootReturn, parentReturn, *children;
unsigned int numChildren;
root = RootWindowOfScreen(screen);
/* go look for a virtual root */
__SWM_VROOT = XInternAtom(dpy, "__SWM_VROOT", False);
if (XQueryTree(dpy, root, &rootReturn, &parentReturn,
&children, &numChildren)) {
for (i = 0; i < numChildren; i++) {
Atom actual_type;
int actual_format;
unsigned long nitems, bytesafter;
Window *newRoot = (Window *)0;
if (XGetWindowProperty(dpy, children[i],
__SWM_VROOT, 0, 1, False, XA_WINDOW,
&actual_type, &actual_format,
&nitems, &bytesafter,
(unsigned char **) &newRoot) == Success
&& newRoot) {
root = *newRoot;
break;
}
}
if (children)
XFree((char *)children);
}
save_screen = screen;
}
return root;
}
#undef RootWindowOfScreen
#define RootWindowOfScreen(s) VirtualRootWindowOfScreen(s)
#undef RootWindow
#define RootWindow(dpy,screen) VirtualRootWindowOfScreen(ScreenOfDisplay(dpy,screen))
#undef DefaultRootWindow
#define DefaultRootWindow(dpy) VirtualRootWindowOfScreen(DefaultScreenOfDisplay(dpy))
#endif /* _VROOT_H_ */

View file

@ -1,14 +0,0 @@
/* This file contains compatibility routines for systems without Xmu.
* You would be better served by installing Xmu on your machine or
* yelling at your vendor to ship it.
*/
#ifndef __XMU_H__
#define __XMU_H__
#include <X11/Xlib.h>
#include <stdio.h>
int XmuPrintDefaultErrorMessage (Display *dpy, XErrorEvent *event, FILE *fp);
#endif /* __XMU_H__ */