Ignore:
Timestamp:
03/07/13 18:13:05 (11 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
default
Phase:
public
Message:

Implemented the C++ client part of the re-registration support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/client/c/hu/varadiistvan/xplra/MultiBuffer.cc

    r40 r57  
    251251//------------------------------------------------------------------------------
    252252
    253 MultiBuffer::~MultiBuffer() throw(Exception)
    254 {
    255     unregisterFromXPlane();
     253MultiBuffer::~MultiBuffer() throw()
     254{
     255    unregisterSafelyFromXPlane();
    256256    delete[] data;
    257257}
     
    358358        xplane.checkResult();
    359359        registeredID = -1;
     360    }
     361}
     362
     363//------------------------------------------------------------------------------
     364
     365bool MultiBuffer::unregisterSafelyFromXPlane() throw()
     366{
     367    try {
     368        unregisterFromXPlane();
     369        return true;
     370    } catch(...) {
     371        registeredID = -1;
     372        return false;
    360373    }
    361374}
     
    615628//------------------------------------------------------------------------------
    616629
     630void MultiBuffer::reregisterInXPlane() throw(Exception)
     631{
     632    if (registeredID>=0) {
     633        int origRegisteredID = registeredID;
     634        try {
     635            registeredID = -1;
     636            registerInXPlane();
     637        } catch(...) {
     638            registeredID = origRegisteredID;
     639            throw;
     640        }
     641    }
     642}
     643
     644//------------------------------------------------------------------------------
     645
    617646// Local Variables:
    618647// mode: C++
Note: See TracChangeset for help on using the changeset viewer.