open_toontown_panda3d/panda/src/gobj/bufferContext.cxx

67 lines
2.0 KiB
C++

// Filename: bufferContext.cxx
// Created by: drose (16Mar06)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University. All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license. You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
#include "bufferContext.h"
TypeHandle BufferContext::_type_handle;
////////////////////////////////////////////////////////////////////
// Function: BufferContext::Constructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
BufferContext::
BufferContext(BufferResidencyTracker *residency) :
_residency(residency),
_residency_state(0),
_data_size_bytes(0),
_owning_chain(NULL)
{
set_owning_chain(&residency->_chains[0]);
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::Destructor
// Access: Public, Virtual
// Description:
////////////////////////////////////////////////////////////////////
BufferContext::
~BufferContext() {
set_owning_chain(NULL);
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::set_owning_chain
// Access: Private
// Description: Moves this object to a different BufferContextChain.
////////////////////////////////////////////////////////////////////
void BufferContext::
set_owning_chain(BufferContextChain *chain) {
if (chain != _owning_chain) {
if (_owning_chain != (BufferContextChain *)NULL){
--(_owning_chain->_count);
_owning_chain->adjust_bytes(-(int)_data_size_bytes);
remove_from_list();
}
_owning_chain = chain;
if (_owning_chain != (BufferContextChain *)NULL) {
++(_owning_chain->_count);
_owning_chain->adjust_bytes((int)_data_size_bytes);
insert_before(_owning_chain);
}
}
}