本文整理汇总了C++中qgetenv函数的典型用法代码示例。如果您正苦于以下问题:C++ qgetenv函数的具体用法?C++ qgetenv怎么用?C++ qgetenv使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了qgetenv函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: QEglContext
static QEglContext *createContext(QPaintDevice *device)
{
QEglContext *context;
// Create the context object and open the display.
context = new QEglContext();
context->setApi(QEgl::OpenVG);
// Set the swap interval for the display.
QByteArray interval = qgetenv("QT_VG_SWAP_INTERVAL");
if (!interval.isEmpty())
eglSwapInterval(QEgl::display(), interval.toInt());
else
eglSwapInterval(QEgl::display(), 1);
#ifdef EGL_RENDERABLE_TYPE
// Has the user specified an explicit EGL configuration to use?
QByteArray configId = qgetenv("QT_VG_EGL_CONFIG");
if (!configId.isEmpty()) {
EGLint cfgId = configId.toInt();
EGLint properties[] = {
EGL_CONFIG_ID, cfgId,
EGL_NONE
};
EGLint matching = 0;
EGLConfig cfg;
if (eglChooseConfig
(QEgl::display(), properties, &cfg, 1, &matching) &&
matching > 0) {
// Check that the selected configuration actually supports OpenVG
// and then create the context with it.
EGLint id = 0;
EGLint type = 0;
eglGetConfigAttrib
(QEgl::display(), cfg, EGL_CONFIG_ID, &id);
eglGetConfigAttrib
(QEgl::display(), cfg, EGL_RENDERABLE_TYPE, &type);
if (cfgId == id && (type & EGL_OPENVG_BIT) != 0) {
context->setConfig(cfg);
if (!context->createContext()) {
delete context;
return 0;
}
return context;
} else {
qWarning("QT_VG_EGL_CONFIG: %d is not a valid OpenVG configuration", int(cfgId));
}
}
}
#endif
// Choose an appropriate configuration for rendering into the device.
QEglProperties configProps;
configProps.setPaintDeviceFormat(device);
int redSize = configProps.value(EGL_RED_SIZE);
if (redSize == EGL_DONT_CARE || redSize == 0)
configProps.setPixelFormat(QImage::Format_ARGB32); // XXX
configProps.setValue(EGL_ALPHA_MASK_SIZE, 1);
#ifdef EGL_VG_ALPHA_FORMAT_PRE_BIT
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT |
EGL_VG_ALPHA_FORMAT_PRE_BIT);
configProps.setRenderableType(QEgl::OpenVG);
if (!context->chooseConfig(configProps)) {
// Try again without the "pre" bit.
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT);
if (!context->chooseConfig(configProps)) {
delete context;
return 0;
}
}
#else
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT);
configProps.setRenderableType(QEgl::OpenVG);
if (!context->chooseConfig(configProps)) {
delete context;
return 0;
}
#endif
// Construct a new EGL context for the selected configuration.
if (!context->createContext()) {
delete context;
return 0;
}
return context;
}
示例2: Q_D
void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &offset)
{
Q_D(QRasterWindowSurface);
// Not ready for painting yet, bail out. This can happen in
// QWidget::create_sys()
if (!d->image || rgn.rectCount() == 0)
return;
#ifdef Q_WS_WIN
QRect br = rgn.boundingRect();
#ifndef Q_WS_WINCE
if (!qt_widget_private(window())->isOpaque
&& window()->testAttribute(Qt::WA_TranslucentBackground)
&& (qt_widget_private(window())->data.window_flags & Qt::FramelessWindowHint))
{
QRect r = window()->frameGeometry();
QPoint frameOffset = qt_widget_private(window())->frameStrut().topLeft();
QRect dirtyRect = br.translated(offset + frameOffset);
SIZE size = {r.width(), r.height()};
POINT ptDst = {r.x(), r.y()};
POINT ptSrc = {0, 0};
BLENDFUNCTION blend = {AC_SRC_OVER, 0, (int)(255.0 * window()->windowOpacity()), Q_AC_SRC_ALPHA};
RECT dirty = {dirtyRect.x(), dirtyRect.y(),
dirtyRect.x() + dirtyRect.width(), dirtyRect.y() + dirtyRect.height()};
Q_UPDATELAYEREDWINDOWINFO info = {sizeof(info), NULL, &ptDst, &size, d->image->hdc, &ptSrc, 0, &blend, Q_ULW_ALPHA, &dirty};
ptrUpdateLayeredWindowIndirect(window()->internalWinId(), &info);
} else
#endif
{
QPoint wOffset = qt_qwidget_data(widget)->wrect.topLeft();
HDC widget_dc = widget->getDC();
QRect wbr = br.translated(-wOffset);
BitBlt(widget_dc, wbr.x(), wbr.y(), wbr.width(), wbr.height(),
d->image->hdc, br.x() + offset.x(), br.y() + offset.y(), SRCCOPY);
widget->releaseDC(widget_dc);
}
#ifndef QT_NO_DEBUG
static bool flush = !qgetenv("QT_FLUSH_WINDOWSURFACE").isEmpty();
if (flush) {
SelectObject(qt_win_display_dc(), GetStockObject(BLACK_BRUSH));
Rectangle(qt_win_display_dc(), 0, 0, d->image->width() + 2, d->image->height() + 2);
BitBlt(qt_win_display_dc(), 1, 1, d->image->width(), d->image->height(),
d->image->hdc, 0, 0, SRCCOPY);
}
#endif
#endif
#ifdef Q_WS_X11
extern void *qt_getClipRects(const QRegion &r, int &num); // in qpaintengine_x11.cpp
extern QWidgetData* qt_widget_data(QWidget *);
QPoint wOffset = qt_qwidget_data(widget)->wrect.topLeft();
if (widget->window() != window()) {
XFreeGC(X11->display, d_ptr->gc);
d_ptr->gc = XCreateGC(X11->display, widget->handle(), 0, 0);
}
QRegion wrgn(rgn);
if (!wOffset.isNull())
wrgn.translate(-wOffset);
QRect wbr = wrgn.boundingRect();
if (wrgn.rectCount() != 1) {
int num;
XRectangle *rects = (XRectangle *)qt_getClipRects(wrgn, num);
XSetClipRectangles(X11->display, d_ptr->gc, 0, 0, rects, num, YXBanded);
}
QRect br = rgn.boundingRect().translated(offset);
#ifndef QT_NO_MITSHM
if (d_ptr->image->xshmpm) {
XCopyArea(X11->display, d_ptr->image->xshmpm, widget->handle(), d_ptr->gc,
br.x(), br.y(), br.width(), br.height(), wbr.x(), wbr.y());
XSync(X11->display, False);
} else if (d_ptr->image->xshmimg) {
const QImage &src = d->image->image;
br = br.intersected(src.rect());
XShmPutImage(X11->display, widget->handle(), d_ptr->gc, d_ptr->image->xshmimg,
br.x(), br.y(), wbr.x(), wbr.y(), br.width(), br.height(), False);
XSync(X11->display, False);
} else
#endif
{
const QImage &src = d->image->image;
br = br.intersected(src.rect());
if (src.format() != QImage::Format_RGB32 || widget->x11Info().depth() < 24) {
Q_ASSERT(src.depth() >= 16);
const QImage sub_src(src.scanLine(br.y()) + br.x() * (uint(src.depth()) / 8),
br.width(), br.height(), src.bytesPerLine(), src.format());
QX11PixmapData *data = new QX11PixmapData(QPixmapData::PixmapType);
data->xinfo = widget->x11Info();
data->fromImage(sub_src, Qt::NoOpaqueDetection);
QPixmap pm = QPixmap(data);
//.........这里部分代码省略.........
示例3: m_screen
//.........这里部分代码省略.........
// Make sure window is above navigator but below keyboard if running as root
// since navigator won't automatically set our z-order in this case
if (getuid() == 0) {
errno = 0;
val[0] = MAGIC_ZORDER_FOR_NO_NAV;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_ZORDER, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window z-order, errno=%d", errno);
}
// Window won't be visible unless it has some buffers so make one dummy buffer that is 1x1
errno = 0;
val[0] = SCREEN_USAGE_NATIVE;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_USAGE, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window buffer usage, errno=%d", errno);
errno = 0;
val[0] = m_screen->nativeFormat();
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_FORMAT, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window pixel format, errno=%d", errno);
errno = 0;
val[0] = 1;
val[1] = 1;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_BUFFER_SIZE, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window buffer size, errno=%d", errno);
errno = 0;
result = screen_create_window_buffers(m_window, 1);
if (result != 0)
qFatal("QQNX: failed to create window buffer, errno=%d", errno);
// Window is always the size of the display
errno = 0;
QRect geometry = m_screen->geometry();
val[0] = geometry.width();
val[1] = geometry.height();
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SIZE, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window size, errno=%d", errno);
// Fill the window with solid black. Note that the LSB of the pixel value
// 0x00000000 just happens to be 0x00, so if and when this root window's
// alpha blending mode is changed from None to Source-Over, it will then
// be interpreted as transparent.
errno = 0;
val[0] = 0;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_COLOR, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window colour, errno=%d", errno);
// Make the window opaque
errno = 0;
val[0] = SCREEN_TRANSPARENCY_NONE;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_TRANSPARENCY, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window transparency, errno=%d", errno);
// Set the swap interval to 1
errno = 0;
val[0] = 1;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SWAP_INTERVAL, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window swap interval, errno=%d", errno);
// Set viewport size equal to window size but move outside buffer so the fill colour is used exclusively
errno = 0;
val[0] = geometry.width();
val[1] = geometry.height();
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SOURCE_SIZE, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window source size, errno=%d", errno);
errno = 0;
val[0] = 0;
val[1] = 0;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SOURCE_POSITION, val);
if (result != 0)
qFatal("QQnxRootWindow: failed to set window source position, errno=%d", errno);
// Optionally disable the screen power save
bool ok = false;
const int disablePowerSave = qgetenv("QQNX_DISABLE_POWER_SAVE").toInt(&ok);
if (ok && disablePowerSave) {
const int mode = SCREEN_IDLE_MODE_KEEP_AWAKE;
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_IDLE_MODE, &mode);
if (result != 0)
qWarning("QQnxRootWindow: failed to disable power saving mode");
}
createWindowGroup();
// Don't post yet. This will be lazily done from QQnxScreen upon first posting of
// a child window. Doing it now pre-emptively would create a flicker if one of
// the QWindow's about to be created sets its Qt::WA_TranslucentBackground flag
// and immediately triggers the buffer re-creation in makeTranslucent().
}
示例4: showDisassembly
bool Options::showDisassembly()
{
static bool showCode = !qgetenv("QV4_SHOW_ASM").isNull();
return showCode;
}
示例5: cartaGetEnv
static QString cartaGetEnv( const QString & name)
{
std::string fullName = ("CARTAVIS_" + name).toStdString();
return qgetenv( fullName.c_str());
}
示例6: defined
Vector<String> PluginDatabase::defaultPluginDirectories()
{
Vector<String> paths;
// Add paths specific to each platform
#if defined(XP_UNIX)
String userPluginPath = homeDirectoryPath();
userPluginPath.append(String("/.mozilla/plugins"));
paths.append(userPluginPath);
userPluginPath = homeDirectoryPath();
userPluginPath.append(String("/.netscape/plugins"));
paths.append(userPluginPath);
paths.append("/usr/lib/browser/plugins");
paths.append("/usr/local/lib/mozilla/plugins");
paths.append("/usr/lib/firefox/plugins");
paths.append("/usr/lib64/browser-plugins");
paths.append("/usr/lib/browser-plugins");
paths.append("/usr/lib/mozilla/plugins");
paths.append("/usr/local/netscape/plugins");
paths.append("/opt/mozilla/plugins");
paths.append("/opt/mozilla/lib/plugins");
paths.append("/opt/netscape/plugins");
paths.append("/opt/netscape/communicator/plugins");
paths.append("/usr/lib/netscape/plugins");
paths.append("/usr/lib/netscape/plugins-libc5");
paths.append("/usr/lib/netscape/plugins-libc6");
paths.append("/usr/lib64/netscape/plugins");
paths.append("/usr/lib64/mozilla/plugins");
paths.append("/usr/lib/nsbrowser/plugins");
paths.append("/usr/lib64/nsbrowser/plugins");
String mozHome(getenv("MOZILLA_HOME"));
mozHome.append("/plugins");
paths.append(mozHome);
Vector<String> mozPaths;
String mozPath(getenv("MOZ_PLUGIN_PATH"));
mozPath.split(UChar(':'), /* allowEmptyEntries */ false, mozPaths);
paths.append(mozPaths);
#elif defined(XP_MACOSX)
String userPluginPath = homeDirectoryPath();
userPluginPath.append(String("/Library/Internet Plug-Ins"));
paths.append(userPluginPath);
paths.append("/Library/Internet Plug-Ins");
#elif defined(XP_WIN)
String userPluginPath = homeDirectoryPath();
userPluginPath.append(String("\\Application Data\\Mozilla\\plugins"));
paths.append(userPluginPath);
#endif
// Add paths specific to each port
#if PLATFORM(QT)
Vector<String> qtPaths;
String qtPath(qgetenv("QTWEBKIT_PLUGIN_PATH").constData());
qtPath.split(UChar(':'), /* allowEmptyEntries */ false, qtPaths);
paths.append(qtPaths);
#endif
return paths;
}
示例7: d
PlayEngine::PlayEngine()
: d(new Data(this)) {
Q_ASSERT(d->confDir.isValid());
_Debug("Create audio/video plugins");
d->audio = new AudioController(this);
d->video = new VideoOutput(this);
d->filter = new VideoFilter;
d->chapterInfo = new ChapterInfoObject(this, this);
d->updateMediaName();
_Debug("Make registrations and connections");
connect(d->video, &VideoOutput::formatChanged,
this, &PlayEngine::updateVideoFormat);
connect(d->video, &VideoOutput::droppedFramesChanged,
this, &PlayEngine::droppedFramesChanged);
d->handle = mpv_create();
auto verbose = qgetenv("CMPLAYER_MPV_VERBOSE").toLower().trimmed();
const QVector<QByteArray> lvs = {"no", "fatal", "error", "warn", "info",
"status", "v", "debug", "trace"};
if (lvs.indexOf(verbose) < lvs.indexOf("info"))
verbose = "info";
mpv_request_log_messages(d->handle, verbose.constData());
d->observe();
connect(this, &PlayEngine::beginChanged, this, &PlayEngine::endChanged);
connect(this, &PlayEngine::durationChanged, this, &PlayEngine::endChanged);
connect(this, &PlayEngine::videoStreamsChanged, this, [=] () {
if (_Change(d->hasVideo, !d->streams[StreamVideo].tracks.isEmpty()))
emit hasVideoChanged();
d->videoInfo.setTracks(d->streams[StreamVideo].tracks);
});
connect(this, &PlayEngine::audioStreamsChanged, this, [=] ()
{ d->audioInfo.setTracks(d->streams[StreamAudio].tracks); });
connect(this, &PlayEngine::subtitleStreamsChanged, this, [=] ()
{ d->subInfo.setTracks(d->streams[StreamSubtitle].tracks); });
connect(this, &PlayEngine::currentVideoStreamChanged, this, [=] (int id)
{ d->videoInfo.setTrack(d->streams[StreamVideo].tracks.value(id)); });
connect(this, &PlayEngine::currentAudioStreamChanged, this, [=] (int id)
{ d->audioInfo.setTrack(d->streams[StreamAudio].tracks.value(id)); });
connect(this, &PlayEngine::currentSubtitleStreamChanged, this, [=] ()
{ d->subInfo.setTracks(d->streams[StreamSubtitle].tracks); });
auto checkDeint = [=] () {
auto act = Unavailable;
if (d->filter->isInputInterlaced())
act = d->filter->isOutputInterlaced() ? Deactivated : Activated;
d->videoInfo.setDeinterlacer(act);
};
connect(d->filter, &VideoFilter::inputInterlacedChanged,
this, checkDeint, Qt::QueuedConnection);
connect(d->filter, &VideoFilter::outputInterlacedChanged,
this, checkDeint, Qt::QueuedConnection);
connect(d->audio, &AudioController::inputFormatChanged, this, [=] () {
d->audioInfo.output()->setFormat(d->audio->inputFormat());
}, Qt::QueuedConnection);
connect(d->audio, &AudioController::outputFormatChanged, this, [=] () {
d->audioInfo.renderer()->setFormat(d->audio->outputFormat());
}, Qt::QueuedConnection);
connect(d->audio, &AudioController::samplerateChanged, this, [=] (int sr) {
d->audioInfo.renderer()->setSampleRate(sr, true);
}, Qt::QueuedConnection);
connect(d->audio, &AudioController::gainChanged,
&d->audioInfo, &AudioInfoObject::setNormalizer);
auto setOption = [this] (const char *name, const char *data) {
const auto err = mpv_set_option_string(d->handle, name, data);
d->fatal(err, "Couldn't set option %%=%%.", name, data);
};
setOption("fs", "no");
setOption("input-cursor", "yes");
setOption("softvol", "yes");
setOption("softvol-max", "1000.0");
setOption("sub-auto", "no");
setOption("osd-level", "0");
setOption("quiet", "yes");
setOption("input-terminal", "no");
setOption("ad-lavc-downmix", "no");
setOption("title", "\"\"");
setOption("vo", d->vo().constData());
setOption("fixed-vo", "yes");
auto overrides = qgetenv("CMPLAYER_MPV_OPTIONS").trimmed();
if (!overrides.isEmpty()) {
const auto opts = QString::fromLocal8Bit(overrides);
const auto args = opts.split(QRegEx(uR"([\s\t]+)"_q),
QString::SkipEmptyParts);
for (int i=0; i<args.size(); ++i) {
if (!args[i].startsWith("--"_a)) {
_Error("Cannot parse option %%.", args[i]);
continue;
}
const auto arg = args[i].midRef(2);
const int index = arg.indexOf('='_q);
if (index < 0) {
if (arg.startsWith("no-"_a))
setOption(arg.mid(3).toLatin1(), "no");
else
setOption(arg.toLatin1(), "yes");
//.........这里部分代码省略.........
示例8: folderDiscovered
void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
{
// To clean the progress info
emit folderDiscovered(false, QString());
if (discoveryResult < 0 ) {
handleSyncError(_csync_ctx, "csync_update");
return;
}
qDebug() << "<<#### Discovery end #################################################### " << _stopWatch.addLapTime(QLatin1String("Discovery Finished"));
// Sanity check
if (!_journal->isConnected()) {
qDebug() << "Bailing out, DB failure";
emit csyncError(tr("Cannot open the sync journal"));
finalize();
return;
} else {
// Commits a possibly existing (should not though) transaction and starts a new one for the propagate phase
_journal->commitIfNeededAndStartNewTransaction("Post discovery");
}
if( csync_reconcile(_csync_ctx) < 0 ) {
handleSyncError(_csync_ctx, "csync_reconcile");
return;
}
qDebug() << "<<#### Reconcile end #################################################### " << _stopWatch.addLapTime(QLatin1String("Reconcile Finished"));
_hasNoneFiles = false;
_hasRemoveFile = false;
bool walkOk = true;
_seenFiles.clear();
_temporarilyUnavailablePaths.clear();
if( csync_walk_local_tree(_csync_ctx, &treewalkLocal, 0) < 0 ) {
qDebug() << "Error in local treewalk.";
walkOk = false;
}
if( walkOk && csync_walk_remote_tree(_csync_ctx, &treewalkRemote, 0) < 0 ) {
qDebug() << "Error in remote treewalk.";
}
if (_csync_ctx->remote.root_perms) {
_remotePerms[QLatin1String("")] = _csync_ctx->remote.root_perms;
qDebug() << "Permissions of the root folder: " << _remotePerms[QLatin1String("")];
}
// Re-init the csync context to free memory
csync_commit(_csync_ctx);
// The map was used for merging trees, convert it to a list:
_syncedItems = _syncItemMap.values().toVector();
_syncItemMap.clear(); // free memory
// Adjust the paths for the renames.
for (SyncFileItemVector::iterator it = _syncedItems.begin();
it != _syncedItems.end(); ++it) {
(*it)->_file = adjustRenamedPath((*it)->_file);
}
// Sort items per destination
std::sort(_syncedItems.begin(), _syncedItems.end());
// make sure everything is allowed
checkForPermission();
// To announce the beginning of the sync
emit aboutToPropagate(_syncedItems);
// it's important to do this before ProgressInfo::start(), to announce start of new sync
emit transmissionProgress(*_progressInfo);
_progressInfo->start();
if (!_hasNoneFiles && _hasRemoveFile) {
qDebug() << Q_FUNC_INFO << "All the files are going to be changed, asking the user";
bool cancel = false;
emit aboutToRemoveAllFiles(_syncedItems.first()->_direction, &cancel);
if (cancel) {
qDebug() << Q_FUNC_INFO << "Abort sync";
finalize();
return;
}
}
// FIXME: The propagator could create his session in propagator_legacy.cpp
// There's no reason to keep csync_owncloud.c around
ne_session_s *session = 0;
// that call to set property actually is a get which will return the session
csync_set_module_property(_csync_ctx, "get_dav_session", &session);
// post update phase script: allow to tweak stuff by a custom script in debug mode.
if( !qgetenv("OWNCLOUD_POST_UPDATE_SCRIPT").isEmpty() ) {
#ifndef NDEBUG
QString script = qgetenv("OWNCLOUD_POST_UPDATE_SCRIPT");
qDebug() << "OOO => Post Update Script: " << script;
QProcess::execute(script.toUtf8());
#else
qWarning() << "**** Attention: POST_UPDATE_SCRIPT installed, but not executed because compiled with NDEBUG";
#endif
//.........这里部分代码省略.........
示例9: chunkSize
void PropagateUploadFileQNAM::startNextChunk()
{
if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
return;
if (! _jobs.isEmpty() && _currentChunk + _startChunk >= _chunkCount - 1) {
// Don't do parallel upload of chunk if this might be the last chunk because the server cannot handle that
// https://github.com/owncloud/core/issues/11106
// We return now and when the _jobs will be finished we will proceed the last chunk
return;
}
quint64 fileSize = _item._size;
QMap<QByteArray, QByteArray> headers;
headers["OC-Total-Length"] = QByteArray::number(fileSize);
headers["OC-Async"] = "1";
headers["Content-Type"] = "application/octet-stream";
headers["X-OC-Mtime"] = QByteArray::number(qint64(_item._modtime));
if (!_item._etag.isEmpty() && _item._etag != "empty_etag" &&
_item._instruction != CSYNC_INSTRUCTION_NEW // On new files never send a If-Match
) {
// We add quotes because the owncloud server always add quotes around the etag, and
// csync_owncloud.c's owncloud_file_id always strip the quotes.
headers["If-Match"] = '"' + _item._etag + '"';
}
QString path = _item._file;
UploadDevice *device = 0;
if (_chunkCount > 1) {
int sendingChunk = (_currentChunk + _startChunk) % _chunkCount;
// XOR with chunk size to make sure everything goes well if chunk size change between runs
uint transid = _transferId ^ chunkSize();
path += QString("-chunking-%1-%2-%3").arg(transid).arg(_chunkCount).arg(sendingChunk);
headers["OC-Chunked"] = "1";
int currentChunkSize = chunkSize();
if (sendingChunk == _chunkCount - 1) { // last chunk
currentChunkSize = (fileSize % chunkSize());
if( currentChunkSize == 0 ) { // if the last chunk pretents to be 0, its actually the full chunk size.
currentChunkSize = chunkSize();
}
}
device = new UploadDevice(_file, chunkSize() * quint64(sendingChunk), currentChunkSize, &_propagator->_bandwidthManager);
} else {
device = new UploadDevice(_file, 0, fileSize, &_propagator->_bandwidthManager);
}
bool isOpen = true;
if (!device->isOpen()) {
isOpen = device->open(QIODevice::ReadOnly);
}
if( isOpen ) {
PUTFileJob* job = new PUTFileJob(AccountManager::instance()->account(), _propagator->_remoteFolder + path, device, headers, _currentChunk);
_jobs.append(job);
job->setTimeout(_propagator->httpTimeout() * 1000);
connect(job, SIGNAL(finishedSignal()), this, SLOT(slotPutFinished()));
connect(job, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(slotUploadProgress(qint64,qint64)));
connect(job, SIGNAL(uploadProgress(qint64,qint64)), device, SLOT(slotJobUploadProgress(qint64,qint64)));
connect(job, SIGNAL(destroyed(QObject*)), this, SLOT(slotJobDestroyed(QObject*)));
job->start();
_propagator->_activeJobs++;
_currentChunk++;
QByteArray env = qgetenv("OWNCLOUD_PARALLEL_CHUNK");
bool parallelChunkUpload = env=="true" || env =="1";;
if (_currentChunk + _startChunk >= _chunkCount - 1) {
// Don't do parallel upload of chunk if this might be the last chunk because the server cannot handle that
// https://github.com/owncloud/core/issues/11106
parallelChunkUpload = false;
}
if (parallelChunkUpload && (_propagator->_activeJobs < _propagator->maximumActiveJob())
&& _currentChunk < _chunkCount ) {
startNextChunk();
}
if (!parallelChunkUpload || _chunkCount - _currentChunk <= 0) {
emitReady();
}
} else {
示例10: qgetenv
//!---------------------------------------------------------------------------------------------------------
//!
//! \brief get_username
//! \return
//!
QString SystemDispatcher::get_username(){
QString name = qgetenv("USER");
if (name.isEmpty())
name = qgetenv("USERNAME");
return name;
}
示例11: QStringList
QStringList QStandardPaths::standardLocations(StandardLocation type)
{
if (type == MusicLocation) {
return QStringList() << writableLocation(type)
<< getExternalFilesDir("DIRECTORY_MUSIC")
<< getExternalStoragePublicDirectory("DIRECTORY_PODCASTS")
<< getExternalFilesDir("DIRECTORY_PODCASTS")
<< getExternalStoragePublicDirectory("DIRECTORY_NOTIFICATIONS")
<< getExternalFilesDir("DIRECTORY_NOTIFICATIONS")
<< getExternalStoragePublicDirectory("DIRECTORY_ALARMS")
<< getExternalFilesDir("DIRECTORY_ALARMS");
}
if (type == MoviesLocation) {
return QStringList() << writableLocation(type)
<< getExternalFilesDir("DIRECTORY_MOVIES");
}
if (type == PicturesLocation) {
return QStringList() << writableLocation(type)
<< getExternalFilesDir("DIRECTORY_PICTURES");
}
if (type == DocumentsLocation) {
if (QtAndroidPrivate::androidSdkVersion() > 18) {
return QStringList() << writableLocation(type)
<< getExternalFilesDir("DIRECTORY_DOCUMENTS");
} else {
return QStringList() << writableLocation(type)
<< getExternalFilesDir() + QLatin1String("/Documents");
}
}
if (type == DownloadLocation) {
return QStringList() << writableLocation(type)
<< getExternalFilesDir("DIRECTORY_DOWNLOADS");
}
if (type == AppDataLocation || type == AppLocalDataLocation) {
return QStringList() << writableLocation(type)
<< getExternalFilesDir();
}
if (type == CacheLocation) {
return QStringList() << writableLocation(type)
<< getExternalCacheDir();
}
if (type == FontsLocation) {
QString &fontLocation = (*androidDirCache)[QStringLiteral("FONT_LOCATION")];
if (!fontLocation.isEmpty())
return QStringList(fontLocation);
const QByteArray ba = qgetenv("QT_ANDROID_FONT_LOCATION");
if (!ba.isEmpty())
return QStringList((fontLocation = QDir::cleanPath(QString::fromLocal8Bit(ba))));
return QStringList((fontLocation = QLatin1String("/system/fonts")));
}
return QStringList(writableLocation(type));
}
示例12: ftok
//.........这里部分代码省略.........
qDebug("No shmrgn %ld", (long)d_ptr->shmrgn);
return false;
}
d_ptr->hdr = (QVFbHeader *)d_ptr->shmrgn;
data = d_ptr->shmrgn + d_ptr->hdr->dataoffset;
dw = w = d_ptr->hdr->width;
dh = h = d_ptr->hdr->height;
d = d_ptr->hdr->depth;
switch (d) {
case 1:
setPixelFormat(QImage::Format_Mono);
break;
case 8:
setPixelFormat(QImage::Format_Indexed8);
break;
case 12:
setPixelFormat(QImage::Format_RGB444);
break;
case 15:
setPixelFormat(QImage::Format_RGB555);
break;
case 16:
setPixelFormat(QImage::Format_RGB16);
break;
case 18:
setPixelFormat(QImage::Format_RGB666);
break;
case 24:
setPixelFormat(QImage::Format_RGB888);
break;
case 32:
setPixelFormat(QImage::Format_ARGB32_Premultiplied);
break;
}
lstep = d_ptr->hdr->linestep;
// Handle display physical size spec.
int dimIdxW = -1;
int dimIdxH = -1;
for (int i = 0; i < displayArgs.size(); ++i) {
if (displayArgs.at(i).startsWith(QLatin1String("mmWidth"))) {
dimIdxW = i;
break;
}
}
for (int i = 0; i < displayArgs.size(); ++i) {
if (displayArgs.at(i).startsWith(QLatin1String("mmHeight"))) {
dimIdxH = i;
break;
}
}
if (dimIdxW >= 0) {
bool ok;
int pos = 7;
if (displayArgs.at(dimIdxW).at(pos) == QLatin1Char('='))
++pos;
int pw = displayArgs.at(dimIdxW).mid(pos).toInt(&ok);
if (ok) {
physWidth = pw;
if (dimIdxH < 0)
physHeight = dh*physWidth/dw;
}
}
if (dimIdxH >= 0) {
bool ok;
int pos = 8;
if (displayArgs.at(dimIdxH).at(pos) == QLatin1Char('='))
++pos;
int ph = displayArgs.at(dimIdxH).mid(pos).toInt(&ok);
if (ok) {
physHeight = ph;
if (dimIdxW < 0)
physWidth = dw*physHeight/dh;
}
}
if (dimIdxW < 0 && dimIdxH < 0) {
const int dpi = 72;
physWidth = qRound(dw * 25.4 / dpi);
physHeight = qRound(dh * 25.4 / dpi);
}
qDebug("Connected to VFB server %s: %d x %d x %d %dx%dmm (%dx%ddpi)", displaySpec.toLatin1().data(),
w, h, d, physWidth, physHeight, qRound(dw*25.4/physWidth), qRound(dh*25.4/physHeight) );
size = lstep * h;
mapsize = size;
screencols = d_ptr->hdr->numcols;
memcpy(screenclut, d_ptr->hdr->clut, sizeof(QRgb) * screencols);
connected = this;
if (qgetenv("QT_QVFB_BGR").toInt())
pixeltype = BGRPixel;
return true;
}
示例13: Q_ASSERT
void AndroidAssetsFileEngineHandler::prepopulateCache() const
{
Q_ASSERT(!m_hasTriedPrepopulatingCache);
m_hasTriedPrepopulatingCache = true;
Q_ASSERT(m_assetsCache.isEmpty());
// Failsafe: Don't read cache files that are larger than 1MB
static qint64 maxPrepopulatedCacheSize = qMax(1024LL * 1024LL,
qgetenv("QT_ANDROID_MAX_PREPOPULATED_ASSETS_CACHE_SIZE").toLongLong());
const char *fileName = "--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list";
AAsset *asset = AAssetManager_open(m_assetManager, fileName, AASSET_MODE_BUFFER);
if (asset) {
m_hasPrepopulatedCache = true;
AndroidAbstractFileEngine fileEngine(asset, QString::fromLatin1(fileName));
if (fileEngine.open(QIODevice::ReadOnly)) {
qint64 size = fileEngine.size();
if (size <= maxPrepopulatedCacheSize) {
QByteArray bytes(size, Qt::Uninitialized);
qint64 read = fileEngine.read(bytes.data(), size);
if (read != size) {
qWarning("Failed to read prepopulated cache");
return;
}
QDataStream stream(&bytes, QIODevice::ReadOnly);
stream.setVersion(QDataStream::Qt_5_3);
if (stream.status() != QDataStream::Ok) {
qWarning("Failed to read prepopulated cache");
return;
}
while (!stream.atEnd()) {
QString directoryName;
stream >> directoryName;
int fileCount;
stream >> fileCount;
QVector<QString> fileList;
fileList.reserve(fileCount);
while (fileCount--) {
QString fileName;
stream >> fileName;
fileList.append(fileName);
}
QSharedPointer<AndroidAssetDir> *aad = new QSharedPointer<AndroidAssetDir>(new AndroidAssetDir(0));
(*aad)->m_items = fileList;
// Cost = 0, because we should always cache everything if there's a prepopulated cache
QByteArray key = directoryName != QLatin1String("/")
? QByteArray("assets:/") + directoryName.toUtf8()
: QByteArray("assets:");
bool ok = m_assetsCache.insert(key, aad, 0);
if (!ok)
qWarning("Failed to insert in cache: %s", qPrintable(directoryName));
}
} else {
示例14: switch
QString QStandardPaths::writableLocation(StandardLocation type)
{
switch (type) {
case HomeLocation:
return QDir::homePath();
case TempLocation:
return QDir::tempPath();
case CacheLocation:
case GenericCacheLocation:
{
// http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
QString xdgCacheHome = QFile::decodeName(qgetenv("XDG_CACHE_HOME"));
if (isTestModeEnabled())
xdgCacheHome = QDir::homePath() + QLatin1String("/.qttest/cache");
if (xdgCacheHome.isEmpty())
xdgCacheHome = QDir::homePath() + QLatin1String("/.cache");
if (type == QStandardPaths::CacheLocation)
appendOrganizationAndApp(xdgCacheHome);
return xdgCacheHome;
}
case DataLocation:
case GenericDataLocation:
{
QString xdgDataHome = QFile::decodeName(qgetenv("XDG_DATA_HOME"));
if (isTestModeEnabled())
xdgDataHome = QDir::homePath() + QLatin1String("/.qttest/share");
if (xdgDataHome.isEmpty())
xdgDataHome = QDir::homePath() + QLatin1String("/.local/share");
if (type == QStandardPaths::DataLocation)
appendOrganizationAndApp(xdgDataHome);
return xdgDataHome;
}
case ConfigLocation:
{
// http://standards.freedesktop.org/basedir-spec/latest/
QString xdgConfigHome = QFile::decodeName(qgetenv("XDG_CONFIG_HOME"));
if (isTestModeEnabled())
xdgConfigHome = QDir::homePath() + QLatin1String("/.qttest/config");
if (xdgConfigHome.isEmpty())
xdgConfigHome = QDir::homePath() + QLatin1String("/.config");
return xdgConfigHome;
}
case RuntimeLocation:
{
const uid_t myUid = geteuid();
// http://standards.freedesktop.org/basedir-spec/latest/
QString xdgRuntimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
if (xdgRuntimeDir.isEmpty()) {
const QString userName = _resolveUserName(myUid);
xdgRuntimeDir = QDir::tempPath() + QLatin1String("/runtime-") + userName;
QDir dir(xdgRuntimeDir);
if (!dir.exists()) {
if (!QDir().mkdir(xdgRuntimeDir)) {
qWarning("QStandardPaths: error creating runtime directory %s: %s", qPrintable(xdgRuntimeDir), qPrintable(qt_error_string(errno)));
return QString();
}
}
}
// "The directory MUST be owned by the user"
QFileInfo fileInfo(xdgRuntimeDir);
if (fileInfo.ownerId() != myUid) {
qWarning("QStandardPaths: wrong ownership on runtime directory %s, %d instead of %d", qPrintable(xdgRuntimeDir),
fileInfo.ownerId(), myUid);
return QString();
}
// "and he MUST be the only one having read and write access to it. Its Unix access mode MUST be 0700."
QFile file(xdgRuntimeDir);
const QFile::Permissions wantedPerms = QFile::ReadUser | QFile::WriteUser | QFile::ExeUser;
if (file.permissions() != wantedPerms && !file.setPermissions(wantedPerms)) {
qWarning("QStandardPaths: wrong permissions on runtime directory %s", qPrintable(xdgRuntimeDir));
return QString();
}
return xdgRuntimeDir;
}
default:
break;
}
// http://www.freedesktop.org/wiki/Software/xdg-user-dirs
QString xdgConfigHome = QFile::decodeName(qgetenv("XDG_CONFIG_HOME"));
if (xdgConfigHome.isEmpty())
xdgConfigHome = QDir::homePath() + QLatin1String("/.config");
QFile file(xdgConfigHome + QLatin1String("/user-dirs.dirs"));
if (!isTestModeEnabled() && file.open(QIODevice::ReadOnly)) {
QHash<QString, QString> lines;
QTextStream stream(&file);
// Only look for lines like: XDG_DESKTOP_DIR="$HOME/Desktop"
QRegExp exp(QLatin1String("^XDG_(.*)_DIR=(.*)$"));
while (!stream.atEnd()) {
const QString &line = stream.readLine();
if (exp.indexIn(line) != -1) {
const QStringList lst = exp.capturedTexts();
const QString key = lst.at(1);
QString value = lst.at(2);
if (value.length() > 2
&& value.startsWith(QLatin1Char('\"'))
&& value.endsWith(QLatin1Char('\"')))
value = value.mid(1, value.length() - 2);
// Store the key and value: "DESKTOP", "$HOME/Desktop"
lines[key] = value;
//.........这里部分代码省略.........
示例15: main
int main(int argc, char *argv[])
{
// Assume the xcb platform if the DISPLAY environment variable is defined,
// otherwise go for kms
if (!qgetenv("DISPLAY").isEmpty())
setenv("QT_QPA_PLATFORM", "xcb", 0);
else {
setenv("QT_QPA_PLATFORM", "kms", 0);
setenv("QT_QPA_GENERIC_PLUGINS", "evdevmouse,evdevkeyboard,evdevtouch", 0);
setenv("QT_KMS_TTYKBD", "1", 0);
}
GreenIsland app(argc, argv);
// Print the banner
qDebug() << qPrintable(QString("Green Island v%1\n").arg(GREENISLAND_VERSION))
<< " http://www.maui-project.org\n"
<< " Bug reports to: https://github.com/hawaii-desktop/greenisland/issues\n"
<< qPrintable(QString(" Build: %1-%2")
.arg(GREENISLAND_VERSION).arg(GIT_REV));
// Print the current system
struct utsname uts;
if (uname(&uts) != -1)
qDebug() << qPrintable(QString("OS: %1, %2, %3, %4").arg(uts.sysname)
.arg(uts.release).arg(uts.version).arg(uts.machine));
else
qDebug() << "OS: Unknown";
// Shell plugin (defaults to desktop for the moment)
QString pluginName = QStringLiteral("desktop");
// Command line arguments
QStringList arguments = QCoreApplication::instance()->arguments();
// Usage instructions
if (arguments.contains(QLatin1String("-h")) || arguments.contains(QLatin1String("--help"))) {
printf("Usage: greenisland [options]\n");
printf("Arguments are:\n");
printf("\t--fullscreen\t\trun in fullscreen mode\n");
printf("\t--synthesize-touch\tsynthesize touch for unhandled mouse events\n");
printf("\t--plugin NAME\t\tuse the NAME shell plugin (default 'desktop')\n");
return 0;
}
// Check whether XDG_RUNTIME_DIR is ok or not
verifyXdgRuntimeDir();
// Synthesize touch for unhandled mouse events
if (arguments.contains(QLatin1String("--synthesize-touch")))
app.setAttribute(Qt::AA_SynthesizeTouchForUnhandledMouseEvents, true);
// Compositor plugin argument
int pluginArg = arguments.indexOf(QLatin1String("--plugin"));
if (pluginArg != -1 && pluginArg + 1 < arguments.size())
pluginName = arguments.at(pluginArg + 1).toLocal8Bit();
// Load the compositor plugin
VCompositor *compositor = app.loadCompositor(pluginName);
if (!compositor)
qFatal("Unable to run the compositor because the '%s' plugin was not found",
pluginName.toLocal8Bit().constData());
// Ensure the compositor renders into a window
if (!compositor->window())
qFatal("The compositor '%s' doesn't render into a window",
pluginName.toLocal8Bit().constData());
// Set window title
compositor->window()->setTitle(QLatin1String("Green Island"));
// Run the shell
compositor->runShell();
// Show the compositor
if (arguments.contains(QLatin1String("--fullscreen"))) {
compositor->window()->setGeometry(QGuiApplication::primaryScreen()->geometry());
compositor->window()->showFullScreen();
} else {
compositor->window()->setGeometry(QGuiApplication::primaryScreen()->availableGeometry());
compositor->window()->showMaximized();
}
return app.exec();
}