Merged changes from branch build_system_redesign at revision 14573.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
/*******************************************************************************
|
||||
//
|
||||
// File: DirectWindow.h
|
||||
//
|
||||
// Description: Client window class for direct screen access.
|
||||
//
|
||||
// Copyright 1998, Be Incorporated, All Rights Reserved.
|
||||
//
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
#ifndef _DIRECT_WINDOW_H
|
||||
#define _DIRECT_WINDOW_H
|
||||
|
||||
#include <Region.h>
|
||||
#include <Window.h>
|
||||
|
||||
class BDirectDriver;
|
||||
|
||||
/* State of the direct access when called back through DirectConnected */
|
||||
enum direct_buffer_state {
|
||||
B_DIRECT_MODE_MASK = 15,
|
||||
|
||||
B_DIRECT_START = 0,
|
||||
B_DIRECT_STOP = 1,
|
||||
B_DIRECT_MODIFY = 2,
|
||||
|
||||
B_CLIPPING_MODIFIED = 16,
|
||||
B_BUFFER_RESIZED = 32,
|
||||
B_BUFFER_MOVED = 64,
|
||||
B_BUFFER_RESET = 128
|
||||
};
|
||||
|
||||
/* State of the direct driver and its hooks functions */
|
||||
enum direct_driver_state {
|
||||
B_DRIVER_CHANGED = 0x0001,
|
||||
B_MODE_CHANGED = 0x0002
|
||||
};
|
||||
|
||||
/* Integer rect used to define a cliping rectangle. All bounds are included */
|
||||
/* Moved to Region.h */
|
||||
|
||||
/* Frame buffer access descriptor */
|
||||
typedef struct {
|
||||
direct_buffer_state buffer_state;
|
||||
direct_driver_state driver_state;
|
||||
void *bits;
|
||||
void *pci_bits;
|
||||
int32 bytes_per_row;
|
||||
uint32 bits_per_pixel;
|
||||
color_space pixel_format;
|
||||
buffer_layout layout;
|
||||
buffer_orientation orientation;
|
||||
uint32 _reserved[9];
|
||||
uint32 _dd_type_;
|
||||
uint32 _dd_token_;
|
||||
uint32 clip_list_count;
|
||||
clipping_rect window_bounds;
|
||||
clipping_rect clip_bounds;
|
||||
clipping_rect clip_list[1];
|
||||
} direct_buffer_info;
|
||||
|
||||
/* BDirectWindow class */
|
||||
class BDirectWindow : public BWindow {
|
||||
public:
|
||||
BDirectWindow( BRect frame,
|
||||
const char *title,
|
||||
window_type type,
|
||||
uint32 flags,
|
||||
uint32 workspace = B_CURRENT_WORKSPACE);
|
||||
BDirectWindow( BRect frame,
|
||||
const char *title,
|
||||
window_look look,
|
||||
window_feel feel,
|
||||
uint32 flags,
|
||||
uint32 workspace = B_CURRENT_WORKSPACE);
|
||||
virtual ~BDirectWindow();
|
||||
static BArchivable *Instantiate(BMessage *data);
|
||||
virtual status_t Archive(BMessage *data, bool deep = true) const;
|
||||
|
||||
/* defined for future extension (fragile base class). Identical to BWindow */
|
||||
virtual void Quit(void);
|
||||
virtual void DispatchMessage(BMessage *message, BHandler *handler);
|
||||
virtual void MessageReceived(BMessage *message);
|
||||
virtual void FrameMoved(BPoint new_position);
|
||||
virtual void WorkspacesChanged(uint32 old_ws, uint32 new_ws);
|
||||
virtual void WorkspaceActivated(int32 ws, bool state);
|
||||
virtual void FrameResized(float new_width, float new_height);
|
||||
virtual void Minimize(bool minimize);
|
||||
virtual void Zoom( BPoint rec_position,
|
||||
float rec_width,
|
||||
float rec_height);
|
||||
virtual void ScreenChanged(BRect screen_size, color_space depth);
|
||||
virtual void MenusBeginning();
|
||||
virtual void MenusEnded();
|
||||
virtual void WindowActivated(bool state);
|
||||
virtual void Show();
|
||||
virtual void Hide();
|
||||
virtual BHandler *ResolveSpecifier(BMessage *msg,
|
||||
int32 index,
|
||||
BMessage *specifier,
|
||||
int32 form,
|
||||
const char *property);
|
||||
virtual status_t GetSupportedSuites(BMessage *data);
|
||||
virtual status_t Perform(perform_code d, void *arg);
|
||||
|
||||
private:
|
||||
virtual void task_looper();
|
||||
virtual BMessage *ConvertToMessage(void *raw, int32 code);
|
||||
|
||||
/* new APIs */
|
||||
|
||||
public:
|
||||
virtual void DirectConnected(direct_buffer_info *info);
|
||||
status_t GetClippingRegion(BRegion *region, BPoint *origin = NULL) const;
|
||||
status_t SetFullScreen(bool enable);
|
||||
bool IsFullScreen() const;
|
||||
|
||||
static bool SupportsWindowMode(screen_id = B_MAIN_SCREEN_ID);
|
||||
|
||||
/* private */
|
||||
private:
|
||||
|
||||
typedef BWindow inherited;
|
||||
|
||||
virtual void _ReservedDirectWindow1();
|
||||
virtual void _ReservedDirectWindow2();
|
||||
virtual void _ReservedDirectWindow3();
|
||||
virtual void _ReservedDirectWindow4();
|
||||
|
||||
|
||||
BDirectWindow();
|
||||
BDirectWindow(BDirectWindow &);
|
||||
BDirectWindow &operator=(BDirectWindow &);
|
||||
|
||||
bool deamon_killer;
|
||||
bool connection_enable;
|
||||
bool full_screen_enable;
|
||||
bool direct_driver_ready;
|
||||
bool in_direct_connect;
|
||||
int32 direct_lock;
|
||||
sem_id direct_sem;
|
||||
uint32 direct_lock_count;
|
||||
thread_id direct_lock_owner;
|
||||
char *direct_lock_stack;
|
||||
sem_id disable_sem;
|
||||
sem_id disable_sem_ack;
|
||||
uint32 dw_init_status;
|
||||
uint32 info_area_size;
|
||||
uint32 direct_driver_type;
|
||||
uint32 direct_driver_token;
|
||||
area_id cloned_clipping_area;
|
||||
area_id source_clipping_area;
|
||||
thread_id direct_deamon_id;
|
||||
direct_buffer_info *buffer_desc;
|
||||
BDirectDriver *direct_driver;
|
||||
struct priv_ext *extension;
|
||||
uint32 _reserved_[15];
|
||||
|
||||
static int32 DirectDeamonFunc(void *arg);
|
||||
bool LockDirect() const;
|
||||
void UnlockDirect() const;
|
||||
void InitData();
|
||||
void DisposeData();
|
||||
status_t DriverSetup() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,138 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) 2001-2002, OpenBeOS
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// File Name: FileGameSound.h
|
||||
// Author: Christopher ML Zumwalt May ([email protected])
|
||||
// Description: BFileGameSound is a class that streams data out of a file.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#ifndef _FILEGAMESOUND_H
|
||||
#define _FILEGAMESOUND_H
|
||||
|
||||
// Standard Includes -----------------------------------------------------------
|
||||
|
||||
// System Includes -------------------------------------------------------------
|
||||
#include <StreamingGameSound.h>
|
||||
|
||||
// Project Includes ------------------------------------------------------------
|
||||
|
||||
// Local Includes --------------------------------------------------------------
|
||||
|
||||
// Local Defines ---------------------------------------------------------------
|
||||
|
||||
// Globals ---------------------------------------------------------------------
|
||||
struct _gs_media_tracker;
|
||||
struct _gs_ramp;
|
||||
|
||||
// FileGameSound -------------------------------------------------------------
|
||||
class BFileGameSound : public BStreamingGameSound
|
||||
{
|
||||
public:
|
||||
BFileGameSound(const entry_ref * file,
|
||||
bool looping = true,
|
||||
BGameSoundDevice * device = NULL);
|
||||
BFileGameSound(const char * file,
|
||||
bool looping = true,
|
||||
BGameSoundDevice * device = NULL);
|
||||
|
||||
virtual ~BFileGameSound();
|
||||
|
||||
virtual BGameSound * Clone() const;
|
||||
|
||||
virtual status_t StartPlaying();
|
||||
virtual status_t StopPlaying();
|
||||
status_t Preload(); // if you have stopped and want to start quickly again
|
||||
|
||||
virtual void FillBuffer(void * inBuffer,
|
||||
size_t inByteCount);
|
||||
virtual status_t Perform(int32 selector, void * data);
|
||||
virtual status_t SetPaused(bool isPaused,
|
||||
bigtime_t rampTime);
|
||||
enum {
|
||||
B_NOT_PAUSED,
|
||||
B_PAUSE_IN_PROGRESS,
|
||||
B_PAUSED
|
||||
};
|
||||
int32 IsPaused();
|
||||
|
||||
private:
|
||||
|
||||
_gs_media_tracker * fAudioStream;
|
||||
|
||||
bool fStopping;
|
||||
bool fLooping;
|
||||
char fReserved;
|
||||
char * fBuffer;
|
||||
|
||||
size_t fFrameSize;
|
||||
size_t fBufferSize;
|
||||
size_t fPlayPosition;
|
||||
|
||||
thread_id fReadThread;
|
||||
port_id fPort;
|
||||
|
||||
_gs_ramp * fPausing;
|
||||
bool fPaused;
|
||||
float fPauseGain;
|
||||
|
||||
status_t Init(const entry_ref* file);
|
||||
|
||||
static int32 ReadThread(void* arg);
|
||||
|
||||
bool Load();
|
||||
bool Read(void * buffer, size_t bytes);
|
||||
|
||||
/* leave these declarations private unless you plan on actually implementing and using them. */
|
||||
BFileGameSound();
|
||||
BFileGameSound(const BFileGameSound&);
|
||||
BFileGameSound& operator=(const BFileGameSound&);
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BFileGameSound_[9];
|
||||
|
||||
status_t _Reserved_BFileGameSound_0(int32 arg, ...); /* SetPaused(bool paused, bigtime_t ramp); */
|
||||
virtual status_t _Reserved_BFileGameSound_1(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_2(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_3(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_4(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_5(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_6(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_7(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_8(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_9(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_10(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_11(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_12(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_13(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_14(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_15(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_16(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_17(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_18(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_19(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_20(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_21(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_22(int32 arg, ...);
|
||||
virtual status_t _Reserved_BFileGameSound_23(int32 arg, ...);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,167 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) 2001-2002, OpenBeOS
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// File Name: GameSound.h
|
||||
// Author: Christopher ML Zumwalt May ([email protected])
|
||||
// Description: Base class for play sounds using the game kit
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#ifndef _GAMESOUND_H
|
||||
#define _GAMESOUND_H
|
||||
|
||||
// Standard Includes -----------------------------------------------------------
|
||||
|
||||
// System Includes -------------------------------------------------------------
|
||||
#include <GameSoundDefs.h>
|
||||
#include <new>
|
||||
|
||||
// Project Includes ------------------------------------------------------------
|
||||
|
||||
// Local Includes --------------------------------------------------------------
|
||||
|
||||
// Local Defines ---------------------------------------------------------------
|
||||
|
||||
// Globals ---------------------------------------------------------------------
|
||||
class BGameSoundDevice;
|
||||
|
||||
// BGameSound class -------------------------------------------------------------
|
||||
class BGameSound
|
||||
{
|
||||
public:
|
||||
BGameSound(BGameSoundDevice * device = NULL);
|
||||
virtual ~BGameSound();
|
||||
|
||||
virtual BGameSound * Clone() const = 0;
|
||||
status_t InitCheck() const;
|
||||
|
||||
// BGameSound attributes
|
||||
BGameSoundDevice * Device() const;
|
||||
gs_id ID() const;
|
||||
const gs_audio_format & Format() const; // only valid after Init()
|
||||
|
||||
// Playing sounds
|
||||
virtual status_t StartPlaying();
|
||||
virtual bool IsPlaying();
|
||||
virtual status_t StopPlaying();
|
||||
|
||||
|
||||
// Modifing the playback
|
||||
status_t SetGain(float gain,
|
||||
bigtime_t duration = 0); // ramp duration in seconds
|
||||
status_t SetPan(float pan,
|
||||
bigtime_t duration = 0); // ramp duration in seconds
|
||||
float Gain();
|
||||
float Pan();
|
||||
|
||||
virtual status_t SetAttributes(gs_attribute * inAttributes,
|
||||
size_t inAttributeCount);
|
||||
virtual status_t GetAttributes(gs_attribute * outAttributes,
|
||||
size_t inAttributeCount);
|
||||
|
||||
void * operator new(size_t size);
|
||||
void * operator new(size_t size, const nothrow_t &) throw();
|
||||
void operator delete(void * ptr);
|
||||
#if !__MWERKS__
|
||||
// there's a bug in MWCC under R4.1 and earlier
|
||||
void operator delete(void * ptr,
|
||||
const nothrow_t &) throw();
|
||||
#endif
|
||||
|
||||
static status_t SetMemoryPoolSize(size_t in_poolSize);
|
||||
static status_t LockMemoryPool(bool in_lockInCore);
|
||||
static int32 SetMaxSoundCount(int32 in_maxCount);
|
||||
|
||||
virtual status_t Perform(int32 selector, void * data);
|
||||
protected:
|
||||
|
||||
status_t SetInitError(status_t in_initError);
|
||||
status_t Init(gs_id handle);
|
||||
|
||||
BGameSound(const BGameSound & other);
|
||||
BGameSound & operator=(const BGameSound & other);
|
||||
|
||||
private:
|
||||
BGameSoundDevice* fDevice;
|
||||
status_t fInitError;
|
||||
|
||||
gs_audio_format fFormat;
|
||||
gs_id fSound;
|
||||
|
||||
/* leave these declarations private unless you plan on actually implementing and using them. */
|
||||
BGameSound();
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BGameSound_[16];
|
||||
|
||||
virtual status_t _Reserved_BGameSound_0(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_1(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_2(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_3(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_4(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_5(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_6(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_7(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_8(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_9(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_10(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_11(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_12(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_13(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_14(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_15(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_16(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_17(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_18(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_19(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_20(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_21(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_22(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_23(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_24(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_25(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_26(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_27(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_28(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_29(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_30(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_31(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_32(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_33(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_34(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_35(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_36(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_37(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_38(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_39(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_40(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_41(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_42(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_43(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_44(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_45(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_46(int32 arg, ...);
|
||||
virtual status_t _Reserved_BGameSound_47(int32 arg, ...);
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // _GAME_SOUND_H
|
||||
@@ -0,0 +1,100 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) 2001-2002, OpenBeOS
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// File Name: GameSound.cpp
|
||||
// Author: Christopher ML Zumwalt May ([email protected])
|
||||
// Description: Declerations for game sounds
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#if !defined(_GAME_SOUND_DEFS_H)
|
||||
#define _GAME_SOUND_DEFS_H
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
typedef int32 gs_id;
|
||||
|
||||
#define B_GS_CUR_API_VERSION B_BEOS_VERSION
|
||||
#define B_GS_MIN_API_VERSION 0x100
|
||||
|
||||
// invalid sound handle
|
||||
#define B_GS_INVALID_SOUND ((gs_id)-1)
|
||||
|
||||
// gs_id for the main mix buffer
|
||||
#define B_GS_MAIN_SOUND ((gs_id)-2)
|
||||
|
||||
|
||||
enum //fixme renumber to real error messages
|
||||
{
|
||||
B_GS_BAD_HANDLE = -99999,
|
||||
B_GS_NO_SOUNDS,
|
||||
B_GS_NO_HARDWARE,
|
||||
B_GS_ALREADY_COMMITTED,
|
||||
B_GS_READ_ONLY_VALUE
|
||||
};
|
||||
|
||||
|
||||
struct gs_audio_format
|
||||
{ /* same as media_raw_audio_format */
|
||||
enum format { /* for "format" */
|
||||
B_GS_U8 = 0x11, /* 128 == mid, 1 == bottom, 255 == top */
|
||||
B_GS_S16 = 0x2, /* 0 == mid, -32767 == bottom, +32767 == top */
|
||||
B_GS_F = 0x24, /* 0 == mid, -1.0 == bottom, 1.0 == top */
|
||||
B_GS_S32 = 0x4 /* 0 == mid, 0x80000001 == bottom, 0x7fffffff == top */
|
||||
};
|
||||
float frame_rate;
|
||||
uint32 channel_count; /* 1 or 2, mostly */
|
||||
uint32 format; /* for compressed formats, go to media_encoded_audio_format */
|
||||
uint32 byte_order; /* 2 for little endian, 1 for big endian */
|
||||
size_t buffer_size; /* size of each buffer -- NOT GUARANTEED */
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
enum gs_attributes
|
||||
{
|
||||
B_GS_NO_ATTRIBUTE = 0, // when there is no attribute
|
||||
B_GS_MAIN_GAIN = 1, // 0 == 0 dB, -6.0 == -6 dB (gs_id ignored)
|
||||
B_GS_CD_THROUGH_GAIN, // 0 == 0 dB, -12.0 == -12 dB (gs_id ignored)
|
||||
// but which CD?
|
||||
B_GS_GAIN = 128, // 0 == 0 dB, -1.0 == -1 dB, +10.0 == +10 dB
|
||||
B_GS_PAN, // 0 == middle, -1.0 == left, +1.0 == right
|
||||
B_GS_SAMPLING_RATE, // 44100.0 == 44.1 kHz
|
||||
B_GS_LOOPING, // 0 == no
|
||||
B_GS_FIRST_PRIVATE_ATTRIBUTE = 90000,
|
||||
B_GS_FIRST_USER_ATTRIBUTE = 100000
|
||||
};
|
||||
struct gs_attribute
|
||||
{
|
||||
int32 attribute; // which attribute
|
||||
bigtime_t duration; // how long of time to ramp over for the change
|
||||
float value; // where the value stops changing
|
||||
uint32 flags; // whatever flags are for the attribute
|
||||
};
|
||||
struct gs_attribute_info
|
||||
{
|
||||
int32 attribute;
|
||||
float granularity;
|
||||
float minimum;
|
||||
float maximum;
|
||||
};
|
||||
|
||||
|
||||
#endif // _GAME_SOUND_DEFS_H
|
||||
@@ -0,0 +1,138 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) 2001-2002, OpenBeOS
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// File Name: FileGameSound.h
|
||||
// Author: Christopher ML Zumwalt May ([email protected])
|
||||
// Description: BFileGameSound is a class that streams data out of a file.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#ifndef _PUSHGAMESOUND_H
|
||||
#define _PUSHGAMESOUND_H
|
||||
// Standard Includes -----------------------------------------------------------
|
||||
|
||||
// System Includes -------------------------------------------------------------
|
||||
#include <StreamingGameSound.h>
|
||||
|
||||
// Project Includes ------------------------------------------------------------
|
||||
|
||||
// Local Includes --------------------------------------------------------------
|
||||
|
||||
// Local Defines ---------------------------------------------------------------
|
||||
|
||||
// Globals ---------------------------------------------------------------------
|
||||
|
||||
// FileGameSound -------------------------------------------------------------
|
||||
class BPushGameSound : public BStreamingGameSound
|
||||
{
|
||||
public:
|
||||
BPushGameSound(size_t inBufferFrameCount,
|
||||
const gs_audio_format * format,
|
||||
size_t inBufferCount = 2,
|
||||
BGameSoundDevice * device = NULL);
|
||||
|
||||
virtual ~BPushGameSound();
|
||||
|
||||
enum lock_status {
|
||||
lock_failed = -1, // not yet time to do more
|
||||
lock_ok = 0, // do more
|
||||
lock_ok_frames_dropped // you may have missed some buffers
|
||||
};
|
||||
|
||||
virtual lock_status LockNextPage(void ** out_pagePtr,
|
||||
size_t * out_pageSize);
|
||||
virtual status_t UnlockPage(void * in_pagePtr);
|
||||
|
||||
virtual lock_status LockForCyclic(void ** out_basePtr,
|
||||
size_t * out_size);
|
||||
virtual status_t UnlockCyclic();
|
||||
virtual size_t CurrentPosition();
|
||||
|
||||
virtual BGameSound * Clone() const;
|
||||
|
||||
virtual status_t Perform(int32 selector, void * data);
|
||||
|
||||
protected:
|
||||
|
||||
BPushGameSound(BGameSoundDevice * device);
|
||||
|
||||
virtual status_t SetParameters(size_t inBufferFrameCount,
|
||||
const gs_audio_format * format,
|
||||
size_t inBufferCount);
|
||||
|
||||
virtual status_t SetStreamHook(void (*hook)(void * inCookie, void * inBuffer, size_t inByteCount, BStreamingGameSound * me),
|
||||
void * cookie);
|
||||
|
||||
virtual void FillBuffer(void * inBuffer,
|
||||
size_t inByteCount);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
/* leave these declarations private unless you plan on actually implementing and using them. */
|
||||
BPushGameSound();
|
||||
BPushGameSound(const BPushGameSound&);
|
||||
BPushGameSound& operator=(const BPushGameSound&);
|
||||
|
||||
bool BytesReady(size_t * bytes);
|
||||
|
||||
sem_id fLock;
|
||||
BList * fPageLocked;
|
||||
|
||||
size_t fLockPos;
|
||||
size_t fPlayPos;
|
||||
|
||||
char * fBuffer;
|
||||
size_t fPageSize;
|
||||
int32 fPageCount;
|
||||
size_t fBufferSize;
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BPushGameSound_[12];
|
||||
|
||||
virtual status_t _Reserved_BPushGameSound_0(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_1(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_2(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_3(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_4(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_5(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_6(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_7(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_8(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_9(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_10(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_11(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_12(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_13(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_14(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_15(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_16(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_17(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_18(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_19(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_20(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_21(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_22(int32 arg, ...);
|
||||
virtual status_t _Reserved_BPushGameSound_23(int32 arg, ...);
|
||||
|
||||
};
|
||||
|
||||
#endif // _PUSH_GAME_SOUND_H
|
||||
@@ -0,0 +1,111 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) 2001-2002, OpenBeOS
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// File Name: SimpleGameSound.h
|
||||
// Author: Christopher ML Zumwalt May ([email protected])
|
||||
// Description: BSimpleGameSound is a class for sound effects that are
|
||||
// short, and consists of non-changing samples in memory.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _SIMPLEGAMESOUND_H
|
||||
#define _SIMPLEGAMESOUND_H
|
||||
|
||||
// Standard Includes -----------------------------------------------------------
|
||||
|
||||
// System Includes -------------------------------------------------------------
|
||||
#include <GameSoundDefs.h>
|
||||
#include <GameSound.h>
|
||||
|
||||
// Project Includes ------------------------------------------------------------
|
||||
|
||||
// Local Includes --------------------------------------------------------------
|
||||
|
||||
// Local Defines ---------------------------------------------------------------
|
||||
|
||||
// Globals ---------------------------------------------------------------------
|
||||
|
||||
// BGameSound class -------------------------------------------------------------
|
||||
class BSimpleGameSound : public BGameSound
|
||||
{
|
||||
public:
|
||||
BSimpleGameSound(const entry_ref * inFile,
|
||||
BGameSoundDevice * device = NULL);
|
||||
BSimpleGameSound(const char * inFile,
|
||||
BGameSoundDevice * device = NULL);
|
||||
BSimpleGameSound(const void * inData,
|
||||
size_t inFrameCount,
|
||||
const gs_audio_format * format,
|
||||
BGameSoundDevice * device = NULL);
|
||||
|
||||
BSimpleGameSound(const BSimpleGameSound & other);
|
||||
|
||||
virtual ~BSimpleGameSound();
|
||||
|
||||
virtual BGameSound * Clone() const;
|
||||
|
||||
virtual status_t Perform(int32 selector, void * data);
|
||||
|
||||
status_t SetIsLooping(bool looping);
|
||||
bool IsLooping() const;
|
||||
|
||||
private:
|
||||
status_t Init(const entry_ref * inFile);
|
||||
status_t Init(const void* inData,
|
||||
int64 inFrameCount,
|
||||
const gs_audio_format* format);
|
||||
|
||||
/* leave these declarations private unless you plan on actually implementing and using them. */
|
||||
BSimpleGameSound();
|
||||
BSimpleGameSound& operator=(const BSimpleGameSound&);
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BSimpleGameSound_[12];
|
||||
|
||||
virtual status_t _Reserved_BSimpleGameSound_0(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_1(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_2(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_3(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_4(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_5(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_6(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_7(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_8(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_9(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_10(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_11(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_12(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_13(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_14(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_15(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_16(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_17(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_18(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_19(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_20(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_21(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_22(int32 arg, ...);
|
||||
virtual status_t _Reserved_BSimpleGameSound_23(int32 arg, ...);
|
||||
|
||||
};
|
||||
|
||||
#endif // _SIMPLE_GAME_SOUND_H
|
||||
@@ -0,0 +1,122 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) 2001-2002, OpenBeOS
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// File Name: StreamingGameSound.h
|
||||
// Author: Christopher ML Zumwalt May ([email protected])
|
||||
// Description: BStreamingGameSound is a class for all kinds of streaming
|
||||
// (data not known beforehand) game sounds.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _STREAMINGGAMESOUND_H
|
||||
#define _STREAMINGGAMESOUND_H
|
||||
|
||||
// Standard Includes -----------------------------------------------------------
|
||||
|
||||
// System Includes -------------------------------------------------------------
|
||||
#include <SupportDefs.h>
|
||||
#include <GameSound.h>
|
||||
#include <Locker.h>
|
||||
|
||||
// Project Includes ------------------------------------------------------------
|
||||
|
||||
// Local Includes --------------------------------------------------------------
|
||||
|
||||
// Local Defines ---------------------------------------------------------------
|
||||
|
||||
// Globals ---------------------------------------------------------------------
|
||||
|
||||
class BStreamingGameSound : public BGameSound
|
||||
{
|
||||
public:
|
||||
BStreamingGameSound(size_t inBufferFrameCount,
|
||||
const gs_audio_format * format,
|
||||
size_t inBufferCount = 2,
|
||||
BGameSoundDevice * device = NULL);
|
||||
|
||||
virtual ~BStreamingGameSound();
|
||||
|
||||
virtual BGameSound * Clone() const;
|
||||
|
||||
virtual status_t SetStreamHook(void (*hook)(void * inCookie, void * inBuffer, size_t inByteCount, BStreamingGameSound * me),
|
||||
void * cookie);
|
||||
virtual void FillBuffer(void * inBuffer,
|
||||
size_t inByteCount);
|
||||
|
||||
virtual status_t SetAttributes(gs_attribute * inAttributes,
|
||||
size_t inAttributeCount);
|
||||
|
||||
virtual status_t Perform(int32 selector, void * data);
|
||||
|
||||
protected:
|
||||
|
||||
BStreamingGameSound(BGameSoundDevice * device);
|
||||
|
||||
virtual status_t SetParameters(size_t inBufferFrameCount,
|
||||
const gs_audio_format * format,
|
||||
size_t inBufferCount);
|
||||
|
||||
bool Lock();
|
||||
void Unlock();
|
||||
|
||||
private:
|
||||
|
||||
void (*fStreamHook)(void * cookie, void * buffer, size_t bytes, BStreamingGameSound * sound);
|
||||
void * fStreamCookie;
|
||||
BLocker fLock;
|
||||
|
||||
/* leave these declarations private unless you plan on actually implementing and using them. */
|
||||
BStreamingGameSound();
|
||||
BStreamingGameSound(const BStreamingGameSound&);
|
||||
BStreamingGameSound& operator=(const BStreamingGameSound&);
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BStreamingGameSound_[12];
|
||||
|
||||
virtual status_t _Reserved_BStreamingGameSound_0(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_1(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_2(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_3(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_4(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_5(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_6(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_7(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_8(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_9(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_10(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_11(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_12(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_13(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_14(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_15(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_16(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_17(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_18(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_19(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_20(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_21(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_22(int32 arg, ...);
|
||||
virtual status_t _Reserved_BStreamingGameSound_23(int32 arg, ...);
|
||||
|
||||
};
|
||||
|
||||
#endif // _STREAMING_GAME_SOUND_H
|
||||
@@ -0,0 +1,225 @@
|
||||
/*******************************************************************************
|
||||
/
|
||||
/ File: WindowScreen.h
|
||||
/
|
||||
/ Description: Client window class for direct screen access.
|
||||
/
|
||||
/ Copyright 1993-98, Be Incorporated, All Rights Reserved.
|
||||
/
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
#ifndef _WINDOW_SCREEN_H
|
||||
#define _WINDOW_SCREEN_H
|
||||
|
||||
#include <BeBuild.h>
|
||||
#include <Window.h>
|
||||
#include <SupportDefs.h>
|
||||
#include <OS.h>
|
||||
#include <kernel/image.h>
|
||||
#include <GraphicsCard.h>
|
||||
#include <Accelerant.h>
|
||||
|
||||
/* private struct */
|
||||
typedef struct {
|
||||
area_id memory_area;
|
||||
area_id io_area;
|
||||
char addon_path[64+B_FILE_NAME_LENGTH];
|
||||
} _direct_screen_info_;
|
||||
|
||||
/* private typedef */
|
||||
typedef int32 (*_add_on_control_)(uint32,void *);
|
||||
|
||||
/* Global function, allowing to move the position of the mouse when the GameKit is in
|
||||
control of the screen. */
|
||||
_IMPEXP_GAME
|
||||
void set_mouse_position(int32 x, int32 y);
|
||||
|
||||
/********************** WARNING - WARNING - WARNING ***********************************
|
||||
This is the current version of WindowScreen. The main purpose of this object is to
|
||||
establish a direct connexion between application and graphic driver, to increase
|
||||
efficiency and abilities. The graphic driver architecture will overcome serious
|
||||
changes in the next release, consequently this could only be a preview version of
|
||||
the real WindowScreen API.
|
||||
|
||||
Nevertheless, compatibility will be insure in future releases FOR MOST OF THE API,
|
||||
through the use of a compatibility library (the new game library having a name
|
||||
different from "libgame.so"), or a compatibility class (the new WindowScreen class
|
||||
using a different name). Part of the API for which compatibility will not be insure
|
||||
after the Preview Release are specifically pointed out in the following declarations.
|
||||
****************************************************************************************/
|
||||
|
||||
enum {
|
||||
B_ENABLE_VIEW_DRAWING = 0x0001,
|
||||
B_ENABLE_DEBUGGER = 0x0002
|
||||
};
|
||||
|
||||
class BWindowScreen : public BWindow {
|
||||
public:
|
||||
BWindowScreen(const char *title,
|
||||
uint32 space,
|
||||
status_t *error,
|
||||
bool debug_enable = false);
|
||||
BWindowScreen(const char *title,
|
||||
uint32 space,
|
||||
uint32 attributes,
|
||||
status_t *error);
|
||||
virtual ~BWindowScreen();
|
||||
virtual void Quit(void);
|
||||
virtual void ScreenConnected(bool active);
|
||||
void Disconnect();
|
||||
virtual void WindowActivated(bool active);
|
||||
virtual void WorkspaceActivated(int32 ws, bool state);
|
||||
virtual void ScreenChanged(BRect screen_size, color_space depth);
|
||||
virtual void Hide();
|
||||
virtual void Show();
|
||||
void SetColorList(rgb_color *list,int32 first_index = 0,int32 last_index = 255);
|
||||
status_t SetSpace(uint32 space);
|
||||
bool CanControlFrameBuffer();
|
||||
status_t SetFrameBuffer(int32 width, int32 height);
|
||||
status_t MoveDisplayArea(int32 x, int32 y);
|
||||
|
||||
void *IOBase(); // Not supported anymore. It always returns NULL
|
||||
|
||||
rgb_color *ColorList();
|
||||
frame_buffer_info *FrameBufferInfo();
|
||||
graphics_card_hook CardHookAt(int32 index);
|
||||
graphics_card_info *CardInfo();
|
||||
|
||||
/******************************* Debugger API Notice ********************************
|
||||
Those three calls, and the debug_enable flag in the constructor, have been added to
|
||||
help debugging a WindowScreen application without a cross-developement platform or
|
||||
the use of serial debug output.
|
||||
|
||||
To use them, you need to :
|
||||
- enable the debug mode by setting the debug_enable flag of the constructor to "true".
|
||||
- register all threads that could be accessing the screen directly at any time. To do
|
||||
that, call RegisterThread after spawning the new thread and before resuming
|
||||
it (you should never draw from the Window thread itself, neither register it).
|
||||
- launch your application from Terminal. The GameKit will first swicth to another
|
||||
workspace before opening the WindowScreen. If you launch from workspace 0 [Alt-F1],
|
||||
it will choose the workspace 1 [Alt-F2]. For any other workspace, it will choose
|
||||
the previous one (for example, for workspace 3 (Alt-F4), it will choose workspace 2
|
||||
[Alt-F3]).
|
||||
|
||||
Then :
|
||||
- You can use printf(...) anywhere to display informations that will be logged in the
|
||||
Terminal window. You can go back to the Terminal Window at any time (using the
|
||||
correct Alt-F?? key). Switching workspace will automatically suspend all the thread
|
||||
you registered and save the graphic context. Switching back to the WindowScreen
|
||||
workspace will restore everything and resume your application.
|
||||
- If you need to save and restore more states when your application is suspended and
|
||||
resumed, you can overwrite the ForceSwitchForDebug() method. This function is called
|
||||
with active == true just after suspending your app, and active == false just before
|
||||
resuming it.
|
||||
- You can suspend your application by calling the Debugger() method. This will also
|
||||
switch to the Terminal workspace. Then you can resume by just switchng back to the
|
||||
WindowScreen workspace (using the good Alt-F?? key). It's better not to call Debugger()
|
||||
with the WindowScreen locked.
|
||||
|
||||
In case of crash :
|
||||
- Use the safety short-cut : All the left modifiers (Ctrl, Shift, Option, Command, Alt
|
||||
or equivalents) of your keyboard and F12. That should send you back to 640x480, and
|
||||
the debugger terminal should be visible (and usable) if any.
|
||||
- Then, you can also switch to your Terminal workspace to check the last printf infos.
|
||||
- After you got (we hope) more information about your (or our :-) bug, quit the debugger
|
||||
window. Then you should be able to change your code and run your application again.
|
||||
In any case, check the Error() function immediately after the WindowScreen constructor.
|
||||
A bad error code will mean that the GameKit is in a inconsistent state, and then you
|
||||
have better to reboot your machine. If you don't wnat to reboot, you can also try to
|
||||
run your application in a different workspace.
|
||||
|
||||
It's far to be perfect, but we hope it will still help.
|
||||
|
||||
The Debug API will not be support after the Preview Release (replaced by the debug
|
||||
API in the new WindowScreen class).
|
||||
***************************************************************************************/
|
||||
void RegisterThread(thread_id id);
|
||||
virtual void SuspensionHook(bool active);
|
||||
void Suspend(char *label);
|
||||
|
||||
|
||||
virtual status_t Perform(perform_code d, void *arg);
|
||||
|
||||
private:
|
||||
|
||||
typedef BWindow inherited;
|
||||
|
||||
virtual void _ReservedWindowScreen1();
|
||||
virtual void _ReservedWindowScreen2();
|
||||
virtual void _ReservedWindowScreen3();
|
||||
virtual void _ReservedWindowScreen4();
|
||||
|
||||
BWindowScreen();
|
||||
BWindowScreen(BWindowScreen &);
|
||||
BWindowScreen &operator=(BWindowScreen &);
|
||||
|
||||
char addon_state;
|
||||
char space_mode;
|
||||
void *io_buffer;
|
||||
bool direct_enable;
|
||||
bool work_state;
|
||||
bool window_state;
|
||||
bool activate_state;
|
||||
int32 lock_state;
|
||||
int32 screen_index;
|
||||
int32 memory_area, io_area;
|
||||
display_mode *old_space;
|
||||
display_mode *new_space;
|
||||
uint32 space0;
|
||||
sem_id activate_sem;
|
||||
sem_id debug_sem;
|
||||
image_id addon_image;
|
||||
rgb_color colorList[256];
|
||||
GetAccelerantHook m_gah;
|
||||
graphics_card_info card_info;
|
||||
graphics_card_hook hooks[B_HOOK_COUNT];
|
||||
_direct_screen_info_ info;
|
||||
frame_buffer_info format_info;
|
||||
|
||||
char *debug_buffer;
|
||||
bool debug_state;
|
||||
bool debug_first;
|
||||
int32 debug_list_count;
|
||||
int32 debug_workspace;
|
||||
thread_id *debug_list;
|
||||
|
||||
uint32 _attributes;
|
||||
uint32 mode_count;
|
||||
display_mode *mode_list;
|
||||
engine_token *et;
|
||||
wait_engine_idle m_wei;
|
||||
acquire_engine m_ae;
|
||||
release_engine m_re;
|
||||
fill_rectangle fill_rect;
|
||||
screen_to_screen_blit blit_rect;
|
||||
screen_to_screen_transparent_blit trans_blit_rect;
|
||||
screen_to_screen_scaled_filtered_blit scaled_filtered_blit_rect;
|
||||
|
||||
uint32 _reserved_[21];
|
||||
|
||||
static BRect CalcFrame(int32 index, int32 space, display_mode *dmode);
|
||||
int32 SetFullscreen(int32 enable);
|
||||
status_t InitData(uint32 space, uint32 attributes);
|
||||
status_t SetActiveState(int32 state);
|
||||
status_t SetLockState(int32 state);
|
||||
void GetCardInfo();
|
||||
void Suspend();
|
||||
void Resume();
|
||||
status_t GetModeFromSpace(uint32 space, display_mode *dmode);
|
||||
status_t InitClone();
|
||||
status_t AssertDisplayMode(display_mode *dmode);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user