2017-07-21 16:21:34 +00:00
|
|
|
/******************************************************************************
|
2024-01-17 13:31:45 +00:00
|
|
|
* QSkinny - Copyright (C) The authors
|
2023-04-06 07:23:37 +00:00
|
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
2017-07-21 16:21:34 +00:00
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#include "QskSetup.h"
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
extern void qskUpdateItemFlags();
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
namespace
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
inline bool hasEnvironment( const char* env )
|
|
|
|
{
|
|
|
|
bool ok;
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
const int value = qEnvironmentVariableIntValue( env, &ok );
|
|
|
|
if ( ok )
|
|
|
|
return value != 0;
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
// All other strings are true, apart from "false"
|
|
|
|
auto result = qgetenv( env );
|
|
|
|
return !result.isEmpty() && result != "false";
|
|
|
|
}
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
inline const QskItem::UpdateFlags environmentUpdateFlags()
|
|
|
|
{
|
|
|
|
QskItem::UpdateFlags flags;
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-04-09 06:28:29 +00:00
|
|
|
if ( !hasEnvironment( "QSK_PREFER_FBO_PAINTING" ) )
|
2024-02-02 14:01:43 +00:00
|
|
|
flags |= QskItem::PreferRasterForTextures;
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
if ( hasEnvironment( "QSK_FORCE_BACKGROUND" ) )
|
|
|
|
flags |= QskItem::DebugForceBackground;
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
return flags;
|
|
|
|
}
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
inline QskItem::UpdateFlags defaultUpdateFlags()
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
static QskItem::UpdateFlags flags;
|
|
|
|
|
|
|
|
if ( flags == 0 )
|
|
|
|
{
|
|
|
|
flags |= QskItem::DeferredUpdate;
|
|
|
|
flags |= QskItem::DeferredPolish;
|
|
|
|
flags |= QskItem::DeferredLayout;
|
|
|
|
flags |= QskItem::CleanupOnVisibility;
|
|
|
|
flags |= environmentUpdateFlags();
|
|
|
|
}
|
|
|
|
|
|
|
|
return flags;
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
inline void propagateFlags()
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
qskUpdateItemFlags();
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
static QskItem::UpdateFlags qskUpdateFlags = defaultUpdateFlags();
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
void QskSetup::setUpdateFlags( QskItem::UpdateFlags flags )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
if ( qskUpdateFlags != flags )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
qskUpdateFlags = flags;
|
|
|
|
propagateFlags();
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
QskItem::UpdateFlags QskSetup::updateFlags()
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
return qskUpdateFlags;
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
void QskSetup::resetUpdateFlags()
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
setUpdateFlags( defaultUpdateFlags() );
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
void QskSetup::setUpdateFlag( QskItem::UpdateFlag flag, bool on )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
if ( qskUpdateFlags.testFlag( flag ) != on )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
|
|
|
if ( on )
|
2024-02-02 14:01:43 +00:00
|
|
|
qskUpdateFlags |= flag;
|
2017-07-21 16:21:34 +00:00
|
|
|
else
|
2024-02-02 14:01:43 +00:00
|
|
|
qskUpdateFlags &= ~flag;
|
2017-07-21 16:21:34 +00:00
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
propagateFlags();
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
void QskSetup::resetUpdateFlag( QskItem::UpdateFlag flag )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
setUpdateFlag( flag, flag & defaultUpdateFlags() );
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
|
2024-02-02 14:01:43 +00:00
|
|
|
bool QskSetup::testUpdateFlag( QskItem::UpdateFlag flag )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2024-02-02 14:01:43 +00:00
|
|
|
return qskUpdateFlags.testFlag( flag );
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|