skia2/debugger/debuggermain.cpp
kkinnunen 5caff917f5 debugger: Move Skia initialization out of the GUI widget class
Move Skia initialization out of the GUI widget class to the
main function.

Before, Skia may have been already called before the SkGraphics::Init
was run.

Review URL: https://codereview.chromium.org/822583003
2015-01-02 07:24:14 -08:00

73 lines
1.9 KiB
C++

/*
* Copyright 2012 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "SkDebuggerGUI.h"
#include "SkForceLinking.h"
#include "SkGraphics.h"
#include <QApplication>
__SK_FORCE_IMAGE_DECODER_LINKING;
static void usage(const char * argv0) {
SkDebugf("%s <input> \n", argv0);
SkDebugf(" [--help|-h]: show this help message\n");
SkDebugf("\n\n");
SkDebugf(" input: Either a directory or a single .skp file.\n");
}
int main(int argc, char *argv[]) {
#ifndef SK_BUILD_FOR_WIN32
// Set numeric formatting to default. Otherwise shaders will have numbers with wrong comma.
// QApplication documentation recommends setlocale("LC_NUMERIC", "C") after QApplication
// constuction. However, the components Qt calls (X11 libs, ..) will override that.
setenv("LC_NUMERIC", "C", 1);
#endif
SkGraphics::Init();
QApplication a(argc, argv);
QStringList argList = a.arguments();
if (argList.count() <= 0) {
return -1; // should at least have command name
}
SkString input;
QStringList::const_iterator iter = argList.begin();
SkString commandName(iter->toAscii().data());
++iter; // skip the command name
for ( ; iter != argList.end(); ++iter) {
if (0 == iter->compare("--help") || 0 == iter->compare("-h")) {
usage(commandName.c_str());
return -1;
} else if (input.isEmpty()) {
input = SkString(iter->toAscii().data());
} else {
usage(commandName.c_str());
return -1;
}
}
SkDebuggerGUI w;
if (!input.isEmpty()) {
if (SkStrEndsWith(input.c_str(), ".skp")) {
w.openFile(input.c_str());
} else {
w.setupDirectoryWidget(input.c_str());
}
}
w.show();
int result = a.exec();
SkGraphics::Term();
return result;
}