91 lines
2.1 KiB
C++
91 lines
2.1 KiB
C++
/******************************************************************************
|
|
* QSkinny - Copyright (C) The authors
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*****************************************************************************/
|
|
|
|
#include "QskSetup.h"
|
|
|
|
extern bool qskHasEnvironment( const char* );
|
|
extern void qskUpdateItemFlags();
|
|
|
|
namespace
|
|
{
|
|
inline const QskItem::UpdateFlags environmentUpdateFlags()
|
|
{
|
|
QskItem::UpdateFlags flags;
|
|
|
|
if ( !qskHasEnvironment( "QSK_PREFER_FBO_PAINTING" ) )
|
|
flags |= QskItem::PreferRasterForTextures;
|
|
|
|
if ( qskHasEnvironment( "QSK_FORCE_BACKGROUND" ) )
|
|
flags |= QskItem::DebugForceBackground;
|
|
|
|
return flags;
|
|
}
|
|
|
|
inline QskItem::UpdateFlags defaultUpdateFlags()
|
|
{
|
|
static QskItem::UpdateFlags flags;
|
|
|
|
if ( flags == 0 )
|
|
{
|
|
flags |= QskItem::DeferredUpdate;
|
|
flags |= QskItem::DeferredPolish;
|
|
flags |= QskItem::DeferredLayout;
|
|
flags |= QskItem::CleanupOnVisibility;
|
|
flags |= environmentUpdateFlags();
|
|
}
|
|
|
|
return flags;
|
|
}
|
|
|
|
inline void propagateFlags()
|
|
{
|
|
qskUpdateItemFlags();
|
|
}
|
|
}
|
|
|
|
static QskItem::UpdateFlags qskUpdateFlags = defaultUpdateFlags();
|
|
|
|
void QskSetup::setUpdateFlags( QskItem::UpdateFlags flags )
|
|
{
|
|
if ( qskUpdateFlags != flags )
|
|
{
|
|
qskUpdateFlags = flags;
|
|
propagateFlags();
|
|
}
|
|
}
|
|
|
|
QskItem::UpdateFlags QskSetup::updateFlags()
|
|
{
|
|
return qskUpdateFlags;
|
|
}
|
|
|
|
void QskSetup::resetUpdateFlags()
|
|
{
|
|
setUpdateFlags( defaultUpdateFlags() );
|
|
}
|
|
|
|
void QskSetup::setUpdateFlag( QskItem::UpdateFlag flag, bool on )
|
|
{
|
|
if ( qskUpdateFlags.testFlag( flag ) != on )
|
|
{
|
|
if ( on )
|
|
qskUpdateFlags |= flag;
|
|
else
|
|
qskUpdateFlags &= ~flag;
|
|
|
|
propagateFlags();
|
|
}
|
|
}
|
|
|
|
void QskSetup::resetUpdateFlag( QskItem::UpdateFlag flag )
|
|
{
|
|
setUpdateFlag( flag, flag & defaultUpdateFlags() );
|
|
}
|
|
|
|
bool QskSetup::testUpdateFlag( QskItem::UpdateFlag flag )
|
|
{
|
|
return qskUpdateFlags.testFlag( flag );
|
|
}
|