initial import

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@2 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2006-12-19 20:53:21 +00:00
parent 2cadbd5e56
commit cc68a136aa
341 changed files with 180839 additions and 0 deletions

View file

@ -0,0 +1,402 @@
# CWD \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\
# MMPFile \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.MMP
# Target AUDIO_MEDIASERVER.DLL
# TargetType DLL
# BasicTargetType DLL
# MakefileType GNU
ERASE = @erase 2>>nul
# EPOC DEFINITIONS
EPOCBLD = ..\..\..\..\EPOC32\BUILD\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER\ARMI
EPOCTRG = ..\..\..\..\EPOC32\RELEASE\ARMI
EPOCLIB = ..\..\..\..\EPOC32\RELEASE\ARMI
EPOCLINK = ..\..\..\..\EPOC32\RELEASE\ARMI
EPOCSTATLINK = ..\..\..\..\EPOC32\RELEASE\ARMI
EPOCASSPLINK = ..\..\..\..\EPOC32\RELEASE\MARM
EPOCDATA = \DEV\UIQ21\EPOC32\DATA
EPOCINC = \DEV\UIQ21\EPOC32\INCLUDE
TRGDIR =
DATADIR = Z\SYSTEM\DATA
EPOCBLDUREL = $(EPOCBLD)\UREL
EPOCTRGUREL = $(EPOCTRG)\UREL
EPOCLIBUREL = $(EPOCLIB)\UREL
EPOCLINKUREL = $(EPOCLINK)\UREL
EPOCSTATLINKUREL = $(EPOCSTATLINK)\UREL
EPOCASSPLINKUREL = $(EPOCASSPLINK)\UREL
EPOCBLDUDEB = $(EPOCBLD)\UDEB
EPOCTRGUDEB = $(EPOCTRG)\UDEB
EPOCLIBUDEB = $(EPOCLIB)\UREL
EPOCLINKUDEB = $(EPOCLINK)\UREL
EPOCSTATLINKUDEB = $(EPOCSTATLINK)\UDEB
EPOCASSPLINKUDEB = $(EPOCASSPLINK)\UREL
# EPOC PSEUDOTARGETS
UREL : MAKEWORKUREL RESOURCEUREL
UDEB : MAKEWORKUDEB RESOURCEUDEB
ALL : UREL UDEB
CLEAN CLEANALL : CLEANBUILD CLEANRELEASE CLEANLIBRARY
WHAT WHATALL : WHATUREL WHATUDEB
RESOURCE RESOURCEALL : RESOURCEUREL RESOURCEUDEB
CLEANBUILD CLEANBUILDALL : CLEANBUILDUREL CLEANBUILDUDEB
CLEANRELEASE CLEANRELEASEALL : CLEANRELEASEUREL CLEANRELEASEUDEB
MAKEWORK MAKEWORKALL : MAKEWORKUREL MAKEWORKUDEB
LISTING LISTINGALL : LISTINGUREL LISTINGUDEB
MAKEWORK : MAKEWORKLIBRARY
RESOURCEUREL RESOURCEUDEB : GENERIC_RESOURCE
# must set both PATH and Path to make it work correctly
Path:=X:\DEV\UIQ21\EPOC32\gcc\bin;$(Path)
PATH:=$(Path)
INCDIR = -I "." -I "..\.." -I "..\..\..\..\EPOC32\INCLUDE"
GCCFLAGS=-march=armv4t -mthumb-interwork \
-pipe -c -nostdinc -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas
GCCDEFS = -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARMI__ -D__DLL__ $(USERDEFS)
GCCUREL = gcc -s -fomit-frame-pointer -O $(GCCFLAGS) -DNDEBUG -D_UNICODE $(GCCDEFS)
GCCUDEB = gcc -g -O $(GCCFLAGS) -D_DEBUG -D_UNICODE $(GCCDEFS)
UREL : \
$(EPOCTRGUREL)\AUDIO_MEDIASERVER.DLL \
LIBRARY
UDEB : \
$(EPOCTRGUDEB)\AUDIO_MEDIASERVER.DLL \
LIBRARY
RESOURCEUREL : MAKEWORKUREL
RESOURCEUDEB : MAKEWORKUDEB
LIBRARY : MAKEWORKLIBRARY $(EPOCLIB)\UREL\AUDIO_MEDIASERVER.LIB \DEV\UIQ21\EPOC32\RELEASE\ARM4\UREL\AUDIO_MEDIASERVER.LIB \DEV\UIQ21\EPOC32\RELEASE\THUMB\UREL\AUDIO_MEDIASERVER.LIB
# REAL TARGET - LIBRARY
$(EPOCLIB)\UREL\AUDIO_MEDIASERVER.LIB : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF
dlltool -m arm_interwork --output-lib "$(EPOCLIB)\UREL\AUDIO_MEDIASERVER.LIB" \
--def ".\AUDIO_MEDIASERVER.DEF" \
--dllname "AUDIO_MEDIASERVER[1000c196].DLL"
\DEV\UIQ21\EPOC32\RELEASE\ARM4\UREL\AUDIO_MEDIASERVER.LIB : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF
dlltool -m arm --output-lib "..\..\..\..\EPOC32\RELEASE\ARM4\UREL\AUDIO_MEDIASERVER.LIB" \
--def ".\AUDIO_MEDIASERVER.DEF" \
--dllname "AUDIO_MEDIASERVER[1000c196].DLL"
\DEV\UIQ21\EPOC32\RELEASE\THUMB\UREL\AUDIO_MEDIASERVER.LIB : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF
dlltool -m thumb --output-lib "..\..\..\..\EPOC32\RELEASE\THUMB\UREL\AUDIO_MEDIASERVER.LIB" \
--def ".\AUDIO_MEDIASERVER.DEF" \
--dllname "AUDIO_MEDIASERVER[1000c196].DLL"
FREEZE :
perl -S efreeze.pl "\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF" "$(EPOCBLD)\AUDIO_MEDIASERVER.def"
CLEANLIBRARY :
-$(ERASE) "$(EPOCLIB)\UREL\AUDIO_MEDIASERVER.LIB"
-$(ERASE) "\DEV\UIQ21\EPOC32\RELEASE\ARM4\UREL\AUDIO_MEDIASERVER.LIB"
-$(ERASE) "\DEV\UIQ21\EPOC32\RELEASE\THUMB\UREL\AUDIO_MEDIASERVER.LIB"
GENERIC_RESOURCE : GENERIC_MAKEWORK
# REAL TARGET - BUILD VARIANT UREL
WHATUREL : WHATGENERIC
CLEANUREL : CLEANBUILDUREL CLEANRELEASEUREL
CLEANBUILDUREL :
@perl -S ermdir.pl "$(EPOCBLDUREL)"
CLEANRELEASEUREL : CLEANGENERIC
UREL_RELEASEABLES1= \
\DEV\UIQ21\EPOC32\RELEASE\ARM4\UREL\AUDIO_MEDIASERVER.LIB \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UREL\AUDIO_MEDIASERVER.DLL \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UREL\AUDIO_MEDIASERVER.DLL.MAP \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UREL\AUDIO_MEDIASERVER.LIB \
\DEV\UIQ21\EPOC32\RELEASE\THUMB\UREL\AUDIO_MEDIASERVER.LIB
WHATUREL:
@echo $(UREL_RELEASEABLES1)
CLEANRELEASEUREL:
-$(ERASE) $(UREL_RELEASEABLES1)
LISTINGUREL : MAKEWORKUREL \
LISTINGURELAUDIO_MEDIASERVER \
LISTINGURELPOLLEDAS
LIBSUREL= \
$(EPOCSTATLINKUREL)\EDLLSTUB.LIB \
$(EPOCSTATLINKUREL)\EGCC.LIB \
$(EPOCLINKUREL)\EUSER.LIB \
$(EPOCLINKUREL)\MEDIACLIENTAUDIOSTREAM.LIB \
$(EPOCLINKUREL)\MEDIACLIENT.LIB
$(EPOCTRGUREL)\AUDIO_MEDIASERVER.DLL : $(EPOCBLDUREL)\AUDIO_MEDIASERVER.in \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF $(EPOCSTATLINKUREL)\EDLL.LIB $(LIBSUREL)
dlltool -m arm_interwork --output-def "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.inf" "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.in"
perl -S makedef.pl -Deffile "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.inf" -Frzfile "\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF" "$(EPOCBLD)\AUDIO_MEDIASERVER.def"
-$(ERASE) "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.inf"
dlltool -m arm_interwork --def "$(EPOCBLD)\AUDIO_MEDIASERVER.def" \
--output-exp "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.exp" \
--dllname "AUDIO_MEDIASERVER[1000c196].DLL"
ld -s -e _E32Dll -u _E32Dll "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.exp" --dll \
--base-file "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.bas" -o "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.DLL" \
"$(EPOCSTATLINKUREL)\EDLL.LIB" --whole-archive "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.in" \
--no-whole-archive $(LIBSUREL) $(USERLDFLAGS)
-$(ERASE) "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.exp"
-$(ERASE) "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.DLL"
dlltool -m arm_interwork \
--def "$(EPOCBLD)\AUDIO_MEDIASERVER.def" \
--dllname "AUDIO_MEDIASERVER[1000c196].DLL" \
--base-file "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.bas" \
--output-exp "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.exp"
-$(ERASE) "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.bas"
ld -s -e _E32Dll -u _E32Dll --dll \
"$(EPOCBLDUREL)\AUDIO_MEDIASERVER.exp" \
-Map "$(EPOCTRGUREL)\AUDIO_MEDIASERVER.DLL.map" -o "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.DLL" \
"$(EPOCSTATLINKUREL)\EDLL.LIB" --whole-archive "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.in" \
--no-whole-archive $(LIBSUREL) $(USERLDFLAGS)
-$(ERASE) "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.exp"
petran "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.DLL" "$@" \
-nocall -uid1 0x10000079 -uid2 0x100039ce -uid3 0x1000c196
-$(ERASE) "$(EPOCBLDUREL)\AUDIO_MEDIASERVER.DLL"
OBJECTSUREL= \
$(EPOCBLDUREL)\AUDIO_MEDIASERVER.o \
$(EPOCBLDUREL)\POLLEDAS.o
$(EPOCBLDUREL)\AUDIO_MEDIASERVER.in : $(OBJECTSUREL)
if exist "$@" del "$@"
ar cr $@ $^
# REAL TARGET - BUILD VARIANT UDEB
WHATUDEB : WHATGENERIC
CLEANUDEB : CLEANBUILDUDEB CLEANRELEASEUDEB
CLEANBUILDUDEB :
@perl -S ermdir.pl "$(EPOCBLDUDEB)"
CLEANRELEASEUDEB : CLEANGENERIC
UDEB_RELEASEABLES1= \
\DEV\UIQ21\EPOC32\RELEASE\ARM4\UREL\AUDIO_MEDIASERVER.LIB \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UDEB\AUDIO_MEDIASERVER.DLL \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UDEB\AUDIO_MEDIASERVER.DLL.MAP \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UREL\AUDIO_MEDIASERVER.LIB \
\DEV\UIQ21\EPOC32\RELEASE\THUMB\UREL\AUDIO_MEDIASERVER.LIB
WHATUDEB:
@echo $(UDEB_RELEASEABLES1)
CLEANRELEASEUDEB:
-$(ERASE) $(UDEB_RELEASEABLES1)
LISTINGUDEB : MAKEWORKUDEB \
LISTINGUDEBAUDIO_MEDIASERVER \
LISTINGUDEBPOLLEDAS
LIBSUDEB= \
$(EPOCSTATLINKUDEB)\EDLLSTUB.LIB \
$(EPOCSTATLINKUDEB)\EGCC.LIB \
$(EPOCLINKUDEB)\EUSER.LIB \
$(EPOCLINKUDEB)\MEDIACLIENTAUDIOSTREAM.LIB \
$(EPOCLINKUDEB)\MEDIACLIENT.LIB
$(EPOCTRGUDEB)\AUDIO_MEDIASERVER.DLL : $(EPOCBLDUDEB)\AUDIO_MEDIASERVER.in \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF $(EPOCSTATLINKUDEB)\EDLL.LIB $(LIBSUDEB)
dlltool -m arm_interwork --output-def "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.inf" "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.in"
perl -S makedef.pl -Deffile "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.inf" -Frzfile "\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.DEF" "$(EPOCBLD)\AUDIO_MEDIASERVER.def"
-$(ERASE) "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.inf"
dlltool -m arm_interwork --def "$(EPOCBLD)\AUDIO_MEDIASERVER.def" \
--output-exp "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.exp" \
--dllname "AUDIO_MEDIASERVER[1000c196].DLL"
ld -s -e _E32Dll -u _E32Dll "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.exp" --dll \
--base-file "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.bas" -o "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.DLL" \
"$(EPOCSTATLINKUDEB)\EDLL.LIB" --whole-archive "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.in" \
--no-whole-archive $(LIBSUDEB) $(USERLDFLAGS)
-$(ERASE) "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.exp"
-$(ERASE) "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.DLL"
dlltool -m arm_interwork \
--def "$(EPOCBLD)\AUDIO_MEDIASERVER.def" \
--dllname "AUDIO_MEDIASERVER[1000c196].DLL" \
--base-file "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.bas" \
--output-exp "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.exp"
-$(ERASE) "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.bas"
ld -e _E32Dll -u _E32Dll --dll \
"$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.exp" \
-Map "$(EPOCTRGUDEB)\AUDIO_MEDIASERVER.DLL.map" -o "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.DLL" \
"$(EPOCSTATLINKUDEB)\EDLL.LIB" --whole-archive "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.in" \
--no-whole-archive $(LIBSUDEB) $(USERLDFLAGS)
-$(ERASE) "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.exp"
objcopy -X "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.DLL" "$(EPOCTRGUDEB)\AUDIO_MEDIASERVER.sym"
petran "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.DLL" "$@" \
-nocall -uid1 0x10000079 -uid2 0x100039ce -uid3 0x1000c196
-$(ERASE) "$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.DLL"
OBJECTSUDEB= \
$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.o \
$(EPOCBLDUDEB)\POLLEDAS.o
$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.in : $(OBJECTSUDEB)
if exist "$@" del "$@"
ar cr $@ $^
# SOURCES
# Source AUDIO_MEDIASERVER.CPP
$(EPOCBLDUREL)\AUDIO_MEDIASERVER.lis $(EPOCBLDUREL)\AUDIO_MEDIASERVER.o \
$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.lis $(EPOCBLDUDEB)\AUDIO_MEDIASERVER.o \
: \
\DEV\UIQ21\EPOC32\INCLUDE\E32BASE.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32BASE.INL \
\DEV\UIQ21\EPOC32\INCLUDE\E32DEF.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32DES16.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32DES8.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32HAL.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32KEYS.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32PCCD.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32STD.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32STD.INL \
\DEV\UIQ21\EPOC32\INCLUDE\E32SVR.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDAAUDIOOUTPUTSTREAM.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\CLIENT\BASE.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\CLIENT\BASE.INL \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\CLIENT\CONTROLLER.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\CLIENT\PORT.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\CLIENT\UTILITY.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\AUDIO.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\AUDIO.HRH \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\AUDIOSTREAM.HRH \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\BASE.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\BASE.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\BASE.HRH \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\BASE.INL \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\CONTROLLER.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\CONTROLLER.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\CONTROLLER.HRH \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\PORT.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\PORT.HRH \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\RESOURCE.H \
\DEV\UIQ21\EPOC32\INCLUDE\MDA\COMMON\RESOURCE.HRH \
\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO.H \
\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.H \
\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\POLLEDAS.H
$(EPOCBLDUREL)\AUDIO_MEDIASERVER.o : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Audio_mediaserver.cpp
$(GCCUREL) -I "." $(INCDIR) -o $@ ".\Audio_mediaserver.cpp"
LISTINGURELAUDIO_MEDIASERVER : $(EPOCBLDUREL)\AUDIO_MEDIASERVER.lis
perl -S ecopyfile.pl $? \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.lst.ARMI
$(EPOCBLDUREL)\AUDIO_MEDIASERVER.lis : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Audio_mediaserver.cpp
$(GCCUREL) -Wa,-adln -I "." $(INCDIR) -o nul: ".\Audio_mediaserver.cpp" > $@
$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.o : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Audio_mediaserver.cpp
$(GCCUDEB) -I "." $(INCDIR) -o $@ ".\Audio_mediaserver.cpp"
LISTINGUDEBAUDIO_MEDIASERVER : $(EPOCBLDUDEB)\AUDIO_MEDIASERVER.lis
perl -S ecopyfile.pl $? \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER.lst.ARMI
$(EPOCBLDUDEB)\AUDIO_MEDIASERVER.lis : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Audio_mediaserver.cpp
$(GCCUDEB) -Wa,-adln -I "." $(INCDIR) -o nul: ".\Audio_mediaserver.cpp" > $@
# Source POLLEDAS.CPP
$(EPOCBLDUREL)\POLLEDAS.lis $(EPOCBLDUREL)\POLLEDAS.o \
$(EPOCBLDUDEB)\POLLEDAS.lis $(EPOCBLDUDEB)\POLLEDAS.o \
: \
\DEV\UIQ21\EPOC32\INCLUDE\E32DEF.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32DES16.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32DES8.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32STD.H \
\DEV\UIQ21\EPOC32\INCLUDE\E32STD.INL \
\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\POLLEDAS.H
$(EPOCBLDUREL)\POLLEDAS.o : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Polledas.cpp
$(GCCUREL) -I "." $(INCDIR) -o $@ ".\Polledas.cpp"
LISTINGURELPOLLEDAS : $(EPOCBLDUREL)\POLLEDAS.lis
perl -S ecopyfile.pl $? \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\POLLEDAS.lst.ARMI
$(EPOCBLDUREL)\POLLEDAS.lis : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Polledas.cpp
$(GCCUREL) -Wa,-adln -I "." $(INCDIR) -o nul: ".\Polledas.cpp" > $@
$(EPOCBLDUDEB)\POLLEDAS.o : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Polledas.cpp
$(GCCUDEB) -I "." $(INCDIR) -o $@ ".\Polledas.cpp"
LISTINGUDEBPOLLEDAS : $(EPOCBLDUDEB)\POLLEDAS.lis
perl -S ecopyfile.pl $? \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\POLLEDAS.lst.ARMI
$(EPOCBLDUDEB)\POLLEDAS.lis : \DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\Polledas.cpp
$(GCCUDEB) -Wa,-adln -I "." $(INCDIR) -o nul: ".\Polledas.cpp" > $@
ROMFILE:
@echo file=\DEV\UIQ21\EPOC32\RELEASE\ARMI\##BUILD##\AUDIO_MEDIASERVER.DLL System\Libs\AUDIO_MEDIASERVER.DLL
WHATGENERIC CLEANGENERIC :
@rem none
# Rules to create all necessary directories
GENERIC_MAKEWORK : \
\DEV\UIQ21\EPOC32\BUILD\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER\ARMI
MAKEWORKLIBRARY : \
\DEV\UIQ21\EPOC32\RELEASE\ARM4\UREL \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UREL \
\DEV\UIQ21\EPOC32\RELEASE\THUMB\UREL
MAKEWORKUDEB : \
\DEV\UIQ21\EPOC32\BUILD\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER\ARMI\UDEB \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UDEB
MAKEWORKUREL : \
\DEV\UIQ21\EPOC32\BUILD\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER\ARMI\UREL \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UREL
\DEV\UIQ21\EPOC32\BUILD\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER\ARMI \
\DEV\UIQ21\EPOC32\BUILD\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER\ARMI\UDEB \
\DEV\UIQ21\EPOC32\BUILD\DEV\UIQ21\_SRC\PICODRIVEN\AUDIO\MEDIASERVER\AUDIO_MEDIASERVER\ARMI\UREL \
\DEV\UIQ21\EPOC32\RELEASE\ARM4\UREL \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UDEB \
\DEV\UIQ21\EPOC32\RELEASE\ARMI\UREL \
\DEV\UIQ21\EPOC32\RELEASE\THUMB\UREL \
:
perl -S emkdir.pl $@

View file

@ -0,0 +1,32 @@
/*******************************************************************
*
* File: PolledAS.h
*
* Author: Peter van Sebille (peter@yipton.net)
*
* (c) Copyright 2001, Peter van Sebille
* All Rights Reserved
*
*******************************************************************/
#ifndef __POLLED_AS_H
#define __POLLED_AS_H
class CPrivatePolledActiveScheduler;
class CPolledActiveScheduler : public CBase
{
public:
~CPolledActiveScheduler();
static CPolledActiveScheduler* NewL();
//static CPolledActiveScheduler* Instance();
void Schedule();
protected:
CPolledActiveScheduler(){};
void ConstructL();
CPrivatePolledActiveScheduler* iPrivatePolledActiveScheduler;
};
#endif /* __POLLED_AS_H */

View file

@ -0,0 +1,321 @@
/*******************************************************************
*
* File: Audio_mediaserver.cpp
*
* Author: Peter van Sebille (peter@yipton.net)
*
* Modified/adapted for picodriveN by notaz, 2006
*
* (c) Copyright 2006, notaz
* (c) Copyright 2001, Peter van Sebille
* All Rights Reserved
*
*******************************************************************/
#include "audio_mediaserver.h"
//#define __DEBUG_PRINT_SND
#ifdef __DEBUG_PRINT_SND
#include <e32svr.h> // RDebug
#define DEBUGPRINT(x...) RDebug::Print(x)
#else
#define DEBUGPRINT(x...)
#endif
GLDEF_C TInt E32Dll(TDllReason)
{
return KErrNone;
}
/*******************************************
*
* CGameAudioMS
*
*******************************************/
CGameAudioMS::CGameAudioMS(TInt aRate, TBool aStereo, TInt aPcmFrames, TInt aBufferedFrames)
: iRate(aRate), iStereo(aStereo), iBufferedFrames(aBufferedFrames), iPcmFrames(aPcmFrames)
{
}
CGameAudioMS* CGameAudioMS::NewL(TInt aRate, TBool aStereo, TInt aPcmFrames, TInt aBufferedFrames)
{
DEBUGPRINT(_L("CGameAudioMS::NewL(%i, %i, %i, %i)"),aRate, aStereo, aPcmFrames, aBufferedFrames);
CGameAudioMS* self = new(ELeave) CGameAudioMS(aRate, aStereo, aPcmFrames, aBufferedFrames);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop(); // self
return self;
}
CGameAudioMS::~CGameAudioMS()
{
DEBUGPRINT(_L("CGameAudioMS::~CGameAudioMS()"));
if(iMdaAudioOutputStream) {
iScheduler->Schedule(); // let it finish it's stuff
iMdaAudioOutputStream->Stop();
delete iMdaAudioOutputStream;
}
if(iServer) delete iServer;
for (TInt i=0 ; i<KSoundBuffers+1 ; i++)
delete iSoundBuffers[i];
// Polled AS
if(iScheduler) delete iScheduler;
}
void CGameAudioMS::ConstructL()
{
iServer = CMdaServer::NewL();
iScheduler = CPolledActiveScheduler::NewL();
switch(iRate) {
case 11025: iMdaAudioDataSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate11025Hz; break;
case 16000: iMdaAudioDataSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate16000Hz; break;
case 22050: iMdaAudioDataSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate22050Hz; break;
default: iMdaAudioDataSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz; break;
}
iMdaAudioDataSettings.iChannels = (iStereo) ? TMdaAudioDataSettings::EChannelsStereo : TMdaAudioDataSettings::EChannelsMono;
iMdaAudioDataSettings.iCaps = TMdaAudioDataSettings::ESampleRateFixed | iMdaAudioDataSettings.iSampleRate;
iMdaAudioDataSettings.iFlags = TMdaAudioDataSettings::ENoNetworkRouting;
TInt bytesPerFrame = iStereo ? iPcmFrames << 2 : iPcmFrames << 1;
for (TInt i=0 ; i<KSoundBuffers ; i++)
{
iSoundBuffers[i] = HBufC8::NewL(bytesPerFrame * iBufferedFrames);
iSoundBuffers[i]->Des().FillZ (bytesPerFrame * iBufferedFrames);
}
// because feeding 2 buffers after an underflow is a little too much, but feeding 1 may be not enough,
// prepare this ~50ms empty buffer to additionaly feed after every underflow.
// Another strange thing here: if we try to make and odd-length sound buffer here,
// system then outputs horrible noise! (this happened on 22050 mono and when there
// were no parenthesis around iBufferedFrames / 4.
iSoundBuffers[KSoundBuffers] = HBufC8::NewL(bytesPerFrame * (iBufferedFrames / 4));
iSoundBuffers[KSoundBuffers]->Des().FillZ (bytesPerFrame * (iBufferedFrames / 4));
iCurrentBuffer = 0;
// here we actually test if we can create and open CMdaAudioOutputStream at all, but really create and use it later.
iMdaAudioOutputStream = CMdaAudioOutputStream::NewL(iListener, iServer);
if(iMdaAudioOutputStream) {
delete iMdaAudioOutputStream;
iMdaAudioOutputStream = 0;
}
}
/* currently unused
TInt CGameAudioMS::Write(TInt16* aBuffer, TInt aSize)
{
TInt byteSize = iStereo ? aSize << 2 : aSize << 1;
Mem::Copy(iCurrentPosition, aBuffer, byteSize);
iCurrentPosition += aSize;
if (++iFrameCount == iBufferedFrames)
{
WriteBlock();
}
CPolledActiveScheduler::Instance()->Schedule();
if(iListener.iUnderflowed) Underflowed(); // oh no, CMdaAudioOutputStream underflowed!
return aSize;
}
*/
// returns a pointer to buffer for next frame,
// to be used when iSoundBuffers are used directly
TInt16 *CGameAudioMS::NextFrameL()
{
iCurrentPosition += iPcmFrames << (iStereo?1:0);
if (++iFrameCount == iBufferedFrames)
{
WriteBlockL();
}
iScheduler->Schedule();
if(iListener.iUnderflowed) {
if(iListener.iUnderflowed > KMaxUnderflows) {
delete iMdaAudioOutputStream;
iMdaAudioOutputStream = 0;
return 0;
}
UnderflowedL(); // not again!
}
return iCurrentPosition;
}
TInt16 *CGameAudioMS::DupeFrameL(TInt &aUnderflowed)
{
TInt shorts = iStereo ? (iPcmFrames << 1) : iPcmFrames;
if(iFrameCount)
Mem::Copy(iCurrentPosition, iCurrentPosition-shorts, shorts<<1);
else {
TInt lastBuffer = iCurrentBuffer;
if(--lastBuffer < 0) lastBuffer = KSoundBuffers - 1;
Mem::Copy(iCurrentPosition, ((TInt16*) (iSoundBuffers[lastBuffer]->Ptr()))+shorts*(iBufferedFrames-1), shorts<<1);
}
iCurrentPosition += shorts;
if (++iFrameCount == iBufferedFrames)
{
WriteBlockL();
}
iScheduler->Schedule();
if((aUnderflowed = iListener.iUnderflowed)) { // not again!
if(iListener.iUnderflowed > KMaxUnderflows) {
delete iMdaAudioOutputStream;
iMdaAudioOutputStream = 0;
return 0;
}
UnderflowedL(); // not again!
}
return iCurrentPosition;
}
void CGameAudioMS::WriteBlockL()
{
iScheduler->Schedule();
// do not write until stream is open
if(!iListener.iIsOpen) WaitForOpenToCompleteL();
//if(!iListener.iHasCopied) WaitForCopyToCompleteL(); // almost never happens anyway and sometimes even deadlocks?
//iListener.iHasCopied = EFalse;
if(!iListener.iUnderflowed) {
// don't write if sound is lagging too much
if(iTime - iMdaAudioOutputStream->Position().Int64() <= TInt64(0, KMaxLag)) {
//RDebug::Print(_L("delta: %i"), iTime.Low() - iMdaAudioOutputStream->Position().Int64().Low());
iMdaAudioOutputStream->WriteL(*iSoundBuffers[iCurrentBuffer]);
iTime += KBlockTime;
}
}
iFrameCount = 0;
if (++iCurrentBuffer == KSoundBuffers)
iCurrentBuffer = 0;
iCurrentPosition = (TInt16*) iSoundBuffers[iCurrentBuffer]->Ptr();
}
void CGameAudioMS::Pause()
{
if(!iMdaAudioOutputStream) return;
iScheduler->Schedule(); // let it finish it's stuff
iMdaAudioOutputStream->Stop();
delete iMdaAudioOutputStream;
iMdaAudioOutputStream = 0;
}
// call this before doing any playback!
TInt16 *CGameAudioMS::ResumeL()
{
DEBUGPRINT(_L("CGameAudioMS::Resume()"));
iScheduler->Schedule();
// we act a bit strange here: simulate buffer underflow, which actually starts audio
iListener.iIsOpen = ETrue;
iListener.iUnderflowed = 1;
iFrameCount = 0;
iCurrentPosition = (TInt16*) iSoundBuffers[iCurrentBuffer]->Ptr();
return iCurrentPosition;
}
// handles underflow condition
void CGameAudioMS::UnderflowedL()
{
// recreate the stream
//iMdaAudioOutputStream->Stop();
if(iMdaAudioOutputStream) delete iMdaAudioOutputStream;
iMdaAudioOutputStream = CMdaAudioOutputStream::NewL(iListener, iServer);
iMdaAudioOutputStream->Open(&iMdaAudioDataSettings);
iListener.iIsOpen = EFalse; // wait for it to open
//iListener.iHasCopied = ETrue; // but don't wait for last copy to complete
// let it open and feed some stuff to make it happy
User::After(0);
TInt lastBuffer = iCurrentBuffer;
if(--lastBuffer < 0) lastBuffer = KSoundBuffers - 1;
iScheduler->Schedule();
if(!iListener.iIsOpen) WaitForOpenToCompleteL();
iMdaAudioOutputStream->WriteL(*iSoundBuffers[KSoundBuffers]); // special empty fill-up
iMdaAudioOutputStream->WriteL(*iSoundBuffers[lastBuffer]);
iTime = TInt64(0, KBlockTime/4 + KBlockTime);
}
/*
void CGameAudioMS::WaitForCopyToCompleteL()
{
DEBUGPRINT(_L("CGameAudioMS::WaitForCopyToCompleteL"));
while (!iListener.iHasCopied) {
//User::After(0);
iScheduler->Schedule();
}
}
*/
void CGameAudioMS::WaitForOpenToCompleteL()
{
DEBUGPRINT(_L("CGameAudioMS::WaitForOpenToCompleteL"));
TInt count = 20; // 2 seconds
TInt waitPeriod = 100 * 1000;
if(!iListener.iIsOpen) {
// it is often enough to do this
User::After(0);
iScheduler->Schedule();
}
while (!iListener.iIsOpen && --count)
{
User::After(waitPeriod);
iScheduler->Schedule();
}
if (!iListener.iIsOpen)
User::LeaveIfError(KErrNotSupported);
}
void CGameAudioMS::ChangeVolume(TInt aUp)
{
// do nothing
DEBUGPRINT(_L("CGameAudioMS::ChangeVolume(%i)"), aUp);
}
void TGameAudioEventListener::MaoscOpenComplete(TInt aError)
{
DEBUGPRINT(_L("CGameAudioMS::MaoscOpenComplete, error=%d"), aError);
iIsOpen = ETrue;
if(aError) iUnderflowed++;
else iUnderflowed = 0;
}
void TGameAudioEventListener::MaoscBufferCopied(TInt aError, const TDesC8& aBuffer)
{
DEBUGPRINT(_L("CGameAudioMS::MaoscBufferCopied, error=%d"), aError);
// iHasCopied = ETrue;
if(aError) // shit!
iUnderflowed++;
}
void TGameAudioEventListener::MaoscPlayComplete(TInt aError)
{
DEBUGPRINT(_L("CGameAudioMS::MaoscPlayComplete: %i"), aError);
if(aError)
iUnderflowed++; // never happened to me while testing, but just in case
}

View file

@ -0,0 +1,3 @@
EXPORTS
; NEW:
NewL__12CGameAudioMSiiii @ 1 NONAME ; static CGameAudioMS* NewL(TInt aRate, TBool aStereo, TInt aPcmFrames, TInt aBufferedFrames);

View file

@ -0,0 +1,87 @@
/*******************************************************************
*
* File: Audio_mediaserver.h
*
* Author: Peter van Sebille (peter@yipton.net)
*
* Modified/adapted for picodriveN by notaz, 2006
*
* (c) Copyright 2006, notaz
* (c) Copyright 2001, Peter van Sebille
* All Rights Reserved
*
*******************************************************************/
#ifndef __AUDIO_MEDIASERVER_H
#define __AUDIO_MEDIASERVER_H
#include <Mda\Common\Audio.h>
#include <MdaAudioOutputStream.h>
#include "audio.h"
#include "polledas.h"
const TInt KSoundBuffers = 4;
const TInt KBlockTime = 1000000 / 5; // hardcoded: 5 updates/sec
const TInt KMaxLag = 260000; // max sound lag, lower values increase chanse of underflow
const TInt KMaxUnderflows = 50; // max underflows/API errors we are going allow in a row (to prevent lockups)
class TGameAudioEventListener : public MMdaAudioOutputStreamCallback
{
public: // implements MMdaAudioOutputStreamCallback
void MaoscOpenComplete(TInt aError);
void MaoscBufferCopied(TInt aError, const TDesC8& );
void MaoscPlayComplete(TInt aError);
TBool iIsOpen;
// TBool iHasCopied;
TInt iUnderflowed;
};
class CGameAudioMS : public IGameAudio // IGameAudio MUST be specified first!
{
public: // implements IGameAudio
TInt16 *NextFrameL();
TInt16 *DupeFrameL(TInt &aUnderflowed);
TInt16 *ResumeL();
void Pause();
void ChangeVolume(TInt aUp);
public:
~CGameAudioMS();
CGameAudioMS(TInt aRate, TBool aStereo, TInt aPcmFrames, TInt aBufferedFrames);
void ConstructL();
EXPORT_C static CGameAudioMS* NewL(TInt aRate, TBool aStereo, TInt aPcmFrames, TInt aBufferedFrames);
protected:
void WriteBlockL();
void UnderflowedL();
protected:
void WaitForOpenToCompleteL();
// void WaitForCopyToCompleteL();
TInt iRate;
TBool iStereo;
CMdaAudioOutputStream *iMdaAudioOutputStream;
TMdaAudioDataSettings iMdaAudioDataSettings;
TGameAudioEventListener iListener;
CPolledActiveScheduler *iScheduler;
HBufC8* iSoundBuffers[KSoundBuffers+1];
TInt iBufferedFrames;
TInt16* iCurrentPosition;
TInt iCurrentBuffer;
TInt iFrameCount;
TInt iPcmFrames;
CMdaServer* iServer;
TInt64 iTime;
};
#endif /* __AUDIO_MEDIASERVER_H */

View file

@ -0,0 +1,18 @@
TARGET audio_mediaserver.dll
TARGETTYPE dll
UID 0x100039CE 0x1000C196
USERINCLUDE .
USERINCLUDE ..\..\
SYSTEMINCLUDE \epoc32\include
SOURCEPATH .
SOURCE audio_mediaserver.cpp
SOURCE polledas.cpp
LIBRARY EUSER.LIB mediaclientaudiostream.lib mediaclient.lib
deffile .\audio_mediaserver.def
nostrictdef

View file

@ -0,0 +1,213 @@
/*******************************************************************
*
* File: PolledAS.cpp
*
* Author: Peter van Sebille (peter@yipton.net)
*
* (c) Copyright 2002, Peter van Sebille
* All Rights Reserved
*
*******************************************************************/
/*
* Oh Lord, forgive me for I have sinned.
* In their infinite wisdom, Symbian Engineers have decided that
* the Active Scheduler's queue of Active Objects is private
* and no getters are provided... sigh.
* This mere mortal will have to excercise the power of C pre-processor
* once more to circumvent the will of the gods.
*/
#include <e32std.h>
// from e32base.h
class CBase
{
public:
IMPORT_C virtual ~CBase();
inline TAny* operator new(TUint aSize,TAny *aBase) {Mem::FillZ(aBase,aSize);return(aBase);}
IMPORT_C TAny* operator new(TUint aSize);
inline TAny* operator new(TUint aSize, TLeave) {return newL(aSize);}
IMPORT_C TAny* operator new(TUint aSize,TUint anExtraSize);
protected:
IMPORT_C CBase();
private:
CBase(const CBase&);
CBase& operator=(const CBase&);
IMPORT_C static TAny* newL(TUint aSize);
};
class CActive : public CBase
{
public:
enum TPriority
{
EPriorityIdle=-100,
EPriorityLow=-20,
EPriorityStandard=0,
EPriorityUserInput=10,
EPriorityHigh=20,
};
public:
IMPORT_C ~CActive();
IMPORT_C void Cancel();
IMPORT_C void Deque();
IMPORT_C void SetPriority(TInt aPriority);
inline TBool IsActive() const {return(iActive);}
inline TBool IsAdded() const {return(iLink.iNext!=NULL);}
inline TInt Priority() const {return iLink.iPriority;}
protected:
IMPORT_C CActive(TInt aPriority);
IMPORT_C void SetActive();
// Pure virtual
virtual void DoCancel() =0;
virtual void RunL() =0;
IMPORT_C virtual TInt RunError(TInt aError);
public:
TRequestStatus iStatus;
private:
TBool iActive;
TPriQueLink iLink;
friend class CActiveScheduler;
// friend class CServer;
friend class CPrivatePolledActiveScheduler; // added
};
class CActiveScheduler : public CBase
{
public:
IMPORT_C CActiveScheduler();
IMPORT_C ~CActiveScheduler();
IMPORT_C static void Install(CActiveScheduler* aScheduler);
IMPORT_C static CActiveScheduler* Current();
IMPORT_C static void Add(CActive* anActive);
IMPORT_C static void Start();
IMPORT_C static void Stop();
IMPORT_C static TBool RunIfReady(TInt& aError, TInt aMinimumPriority);
IMPORT_C static CActiveScheduler* Replace(CActiveScheduler* aNewActiveScheduler);
IMPORT_C virtual void WaitForAnyRequest();
IMPORT_C virtual void Error(TInt anError) const;
private:
void DoStart();
void OwnedStartLoop(TInt& aRunning);
IMPORT_C virtual void OnStarting();
IMPORT_C virtual void OnStopping();
IMPORT_C virtual void Reserved_1();
IMPORT_C virtual void Reserved_2();
friend class CPrivatePolledActiveScheduler; // added
private:
// private interface used through by CActiveSchedulerWait objects
friend class CActiveSchedulerWait;
static void OwnedStart(CActiveSchedulerWait& aOwner);
protected:
inline TInt Level() const {return(iLevel);}
private:
TInt iLevel;
TPriQue<CActive> iActiveQ;
};
class TCleanupItem;
class CleanupStack
{
public:
IMPORT_C static void PushL(TAny* aPtr);
IMPORT_C static void PushL(CBase* aPtr);
IMPORT_C static void PushL(TCleanupItem anItem);
IMPORT_C static void Pop();
IMPORT_C static void Pop(TInt aCount);
IMPORT_C static void PopAndDestroy();
IMPORT_C static void PopAndDestroy(TInt aCount);
IMPORT_C static void Check(TAny* aExpectedItem);
inline static void Pop(TAny* aExpectedItem);
inline static void Pop(TInt aCount, TAny* aLastExpectedItem);
inline static void PopAndDestroy(TAny* aExpectedItem);
inline static void PopAndDestroy(TInt aCount, TAny* aLastExpectedItem);
};
/*
* This will declare CPrivatePolledActiveScheduler as a friend
* of all classes that define a friend. CPrivatePolledActiveScheduler needs to
* be a friend of CActive
*/
//#define friend friend class CPrivatePolledActiveScheduler; friend
/*
* This will change the:
* void DoStart();
* method in CActiveScheduler to:
* void DoStart(); friend class CPrivatePolledActiveScheduler;
* We need this to access the private datamembers in CActiveScheduler.
*/
//#define DoStart() DoStart(); friend class CPrivatePolledActiveScheduler;
//#include <e32base.h>
#include "PolledAS.h"
class CPrivatePolledActiveScheduler : public CActiveScheduler
{
public:
void Schedule();
};
void CPrivatePolledActiveScheduler::Schedule()
{
TDblQueIter<CActive> q(iActiveQ);
q.SetToFirst();
FOREVER
{
CActive *pR=q++;
if (pR)
{
if (pR->IsActive() && pR->iStatus!=KRequestPending)
{
pR->iActive=EFalse;
TRAPD(r,pR->RunL());
break;
}
}
else
break;
}
}
CPolledActiveScheduler::~CPolledActiveScheduler()
{
delete iPrivatePolledActiveScheduler;
}
//static CPolledActiveScheduler* sPolledActiveScheduler = NULL;
CPolledActiveScheduler* CPolledActiveScheduler::NewL()
{
//sPolledActiveScheduler =
CPolledActiveScheduler* self = new(ELeave)CPolledActiveScheduler;
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop();
return self;
}
void CPolledActiveScheduler::ConstructL()
{
iPrivatePolledActiveScheduler = new(ELeave) CPrivatePolledActiveScheduler;
iPrivatePolledActiveScheduler->Install(iPrivatePolledActiveScheduler);
}
void CPolledActiveScheduler::Schedule()
{
iPrivatePolledActiveScheduler->Schedule();
}
/*
CPolledActiveScheduler* CPolledActiveScheduler::Instance()
{
// return (CPolledActiveScheduler*) CActiveScheduler::Current();
return sPolledActiveScheduler;
}
*/

View file

@ -0,0 +1,2 @@
copy %EPOCROOT%\epoc32\release\armi\urel\audio_mediaserver.dll ..\
..\..\..\qconsole-1.52\qtty\release\qtty --qc-addr P800 --qc-channel 5 --user qconsole --pass server --cmds "put d:\system\apps\picodriven\audio_mediaserver.dll ..\audio_mediaserver.dll" exit

View file

@ -0,0 +1 @@
copy %EPOCROOT%\epoc32\release\armi\urel\audio_mediaserver.dll ..\