Files
GTASource/rage/scaleform/Src/GSoundRenderer/GSoundRendererComImpl.h

87 lines
2.1 KiB
C
Raw Normal View History

2025-02-23 17:40:52 +08:00
/**********************************************************************
Filename : GSoundRenderer.h
Content : Sound Player/Driver interface
Created : Noveber, 2008
Authors : Maxim Didenko, Vladislav Merker
Copyright : (c) 1998-2009 Scaleform Corp. All Rights Reserved.
Licensees may use this file in accordance with the valid Scaleform
Commercial License Agreement provided with the software.
This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE.
**********************************************************************/
#ifndef INC_GSOUNDPLAYER_COMMON_IMPL_H
#define INC_GSOUNDPLAYER_COMMON_IMPL_H
#include "GConfig.h"
#ifndef GFC_NO_SOUND
#include "GSoundRenderer.h"
//////////////////////////////////////////////////////////////////////////
//
// A simple doubly-linked list node, used to track textures and other resources.
class GDListNode
{
public:
union {
GDListNode *pPrev;
GDListNode *pLast;
};
union {
GDListNode *pNext;
GDListNode *pFirst;
};
// Default constructor, creates root node (empty list).
GDListNode() { pNext = pPrev = this; }
// Inserting constructor, inserts this node at the head of the list.
GDListNode(GDListNode *proot)
{
pNext = proot->pFirst;
pPrev = proot;
proot->pFirst->pPrev = this;
proot->pFirst = this;
}
virtual ~GDListNode() {}
// Remove
void RemoveNode()
{
pPrev->pNext = pNext;
pNext->pPrev = pPrev;
pNext = pPrev = 0;
}
virtual void ReleaseResource() {}
};
//////////////////////////////////////////////////////////////////////////
//
class GSoundSampleImplNode : public GSoundSample, public GDListNode
{
public:
GSoundSampleImplNode(GDListNode* plistRoot);
~GSoundSampleImplNode();
};
class GSoundChannelImplNode : public GSoundChannel, public GDListNode
{
public:
GSoundChannelImplNode(GDListNode* plistRoot);
~GSoundChannelImplNode();
};
#endif // GFC_NO_SOUND
#endif