Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(404)

Side by Side Diff: plugin/linux/main_linux.cc

Issue 340044: Linux: Add support for loading environment variables at plugin start-up from ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « plugin/linux/envvars.cc ('k') | plugin/plugin.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2009, Google Inc. 2 * Copyright 2009, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 24 matching lines...) Expand all
35 35
36 #include <X11/keysym.h> 36 #include <X11/keysym.h>
37 #include <gdk/gdkx.h> 37 #include <gdk/gdkx.h>
38 #include <gdk/gdkkeysyms.h> 38 #include <gdk/gdkkeysyms.h>
39 #include "base/at_exit.h" 39 #include "base/at_exit.h"
40 #include "base/command_line.h" 40 #include "base/command_line.h"
41 #include "base/logging.h" 41 #include "base/logging.h"
42 #include "base/scoped_ptr.h" 42 #include "base/scoped_ptr.h"
43 #include "plugin/cross/main.h" 43 #include "plugin/cross/main.h"
44 #include "plugin/cross/out_of_memory.h" 44 #include "plugin/cross/out_of_memory.h"
45 #include "plugin/linux/envvars.h"
45 46
46 using glue::_o3d::PluginObject; 47 using glue::_o3d::PluginObject;
47 using glue::StreamManager; 48 using glue::StreamManager;
48 using o3d::DisplayWindowLinux; 49 using o3d::DisplayWindowLinux;
49 using o3d::Event; 50 using o3d::Event;
50 51
51 namespace { 52 namespace {
52 // We would normally make this a stack variable in main(), but in a 53 // We would normally make this a stack variable in main(), but in a
53 // plugin, that's not possible, so we make it a global. When the DLL is loaded 54 // plugin, that's not possible, so we make it a global. When the DLL is loaded
54 // this it gets constructed and when it is unlooaded it is destructed. Note 55 // this it gets constructed and when it is unlooaded it is destructed. Note
55 // that this cannot be done in NP_Initialize and NP_Shutdown because those 56 // that this cannot be done in NP_Initialize and NP_Shutdown because those
56 // calls do not necessarily signify the DLL being loaded and unloaded. If the 57 // calls do not necessarily signify the DLL being loaded and unloaded. If the
57 // DLL is not unloaded then the values of global variables are preserved. 58 // DLL is not unloaded then the values of global variables are preserved.
58 base::AtExitManager g_at_exit_manager; 59 base::AtExitManager g_at_exit_manager;
59 60
60 bool g_xembed_support = false; 61 bool g_xembed_support = false;
61 62
63 // This is a #define set on the build command-line for greater flexibility.
64 static const char *kEnvVarsFilePath = O3D_PLUGIN_ENV_VARS_FILE;
65
62 static void DrawPlugin(PluginObject *obj) { 66 static void DrawPlugin(PluginObject *obj) {
63 // Limit drawing to no more than once every timer tick. 67 // Limit drawing to no more than once every timer tick.
64 if (!obj->draw_) return; 68 if (!obj->draw_) return;
65 obj->client()->RenderClient(true); 69 obj->client()->RenderClient(true);
66 obj->draw_ = false; 70 obj->draw_ = false;
67 } 71 }
68 72
69 // Xt support functions 73 // Xt support functions
70 74
71 void LinuxTimer(XtPointer data, XtIntervalId* id) { 75 void LinuxTimer(XtPointer data, XtIntervalId* id) {
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 return NPERR_MODULE_LOAD_FAILED_ERROR; 621 return NPERR_MODULE_LOAD_FAILED_ERROR;
618 622
619 CommandLine::Init(0, NULL); 623 CommandLine::Init(0, NULL);
620 InitLogging("debug.log", 624 InitLogging("debug.log",
621 logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG, 625 logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG,
622 logging::DONT_LOCK_LOG_FILE, 626 logging::DONT_LOCK_LOG_FILE,
623 logging::APPEND_TO_OLD_LOG_FILE); 627 logging::APPEND_TO_OLD_LOG_FILE);
624 628
625 DLOG(INFO) << "NP_Initialize"; 629 DLOG(INFO) << "NP_Initialize";
626 630
631 // Before doing anything more, we first load our environment variables file.
632 // This file is a newline-delimited list of any system-specific environment
633 // variables that need to be set in the browser. Since we are a shared library
634 // and not an executable, we can't set them at browser start time, so we
635 // instead set them in every process that loads our shared library. It is
636 // important that we do this as early as possible so that any relevant
637 // variables are already set when we initialize our shared library
638 // dependencies.
639 o3d::LoadEnvironmentVariablesFile(kEnvVarsFilePath);
640
627 // Check for XEmbed support in the browser. 641 // Check for XEmbed support in the browser.
628 NPBool xembed_support = 0; 642 NPBool xembed_support = 0;
629 NPError err = NPN_GetValue(NULL, NPNVSupportsXEmbedBool, &xembed_support); 643 NPError err = NPN_GetValue(NULL, NPNVSupportsXEmbedBool, &xembed_support);
630 if (err != NPERR_NO_ERROR) 644 if (err != NPERR_NO_ERROR)
631 xembed_support = 0; 645 xembed_support = 0;
632 646
633 if (xembed_support) { 647 if (xembed_support) {
634 // Check for Gtk2 toolkit support in the browser. 648 // Check for Gtk2 toolkit support in the browser.
635 NPNToolkitType toolkit = static_cast<NPNToolkitType>(0); 649 NPNToolkitType toolkit = static_cast<NPNToolkitType>(0);
636 err = NPN_GetValue(NULL, NPNVToolkit, &toolkit); 650 err = NPN_GetValue(NULL, NPNVToolkit, &toolkit);
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 client()->SendResizeEvent(renderer()->width(), renderer()->height(), 958 client()->SendResizeEvent(renderer()->width(), renderer()->height(),
945 false); 959 false);
946 SetGtkEventSource(gtk_container_); 960 SetGtkEventSource(gtk_container_);
947 gtk_widget_destroy(gtk_fullscreen_container_); 961 gtk_widget_destroy(gtk_fullscreen_container_);
948 gtk_widget_unref(gtk_fullscreen_container_); 962 gtk_widget_unref(gtk_fullscreen_container_);
949 gtk_fullscreen_container_ = NULL; 963 gtk_fullscreen_container_ = NULL;
950 fullscreen_ = false; 964 fullscreen_ = false;
951 } 965 }
952 } // namespace _o3d 966 } // namespace _o3d
953 } // namespace glue 967 } // namespace glue
OLDNEW
« no previous file with comments | « plugin/linux/envvars.cc ('k') | plugin/plugin.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698