15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/at_exit.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h"
79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/mac/scoped_nsautorelease_pool.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN)
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/strings/utf_string_conversions.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gl/gl_surface.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(GLES2_CONFORM_SUPPORT_ONLY)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gpu/gles2_conform_support/gtf/gtf_stubs.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFMain.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main(int argc, char *argv[]) {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::AtExitManager at_exit;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CommandLine::Init(argc, argv);
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::MessageLoopForUI message_loop;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  CommandLine::StringVector args =
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    CommandLine::ForCurrentProcess()->GetArgs();
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::mac::ScopedNSAutoreleasePool pool;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<const char*[]> argsArray(new const char*[args.size()+1]);
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  argsArray[0] = argv[0];
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN)
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  std::vector<std::string> argsNonWide(args.size());
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (size_t index = 0; index < args.size(); ++index) {
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    argsNonWide[index] = base::UTF16ToASCII(args[index]);
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    argsArray[index+1] = argsNonWide[index].c_str();
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (size_t index = 0; index < args.size(); ++index) {
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    argsArray[index+1] = args[index].c_str();
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  GTFMain(static_cast<int>(args.size()+1),
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const_cast<char**>(argsArray.get()));
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57