mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
windowsisms
This commit is contained in:
parent
a65ac4fc0c
commit
0cce656d0b
@ -14,6 +14,7 @@
|
|||||||
handleStream.cxx handleStream.h handleStream.I \
|
handleStream.cxx handleStream.h handleStream.I \
|
||||||
handleStreamBuf.cxx handleStreamBuf.h \
|
handleStreamBuf.cxx handleStreamBuf.h \
|
||||||
p3d_lock.h p3d_plugin.h \
|
p3d_lock.h p3d_plugin.h \
|
||||||
|
p3d_plugin_config.h \
|
||||||
p3d_plugin_common.h \
|
p3d_plugin_common.h \
|
||||||
p3dDownload.h p3dDownload.I \
|
p3dDownload.h p3dDownload.I \
|
||||||
p3dFileDownload.h p3dFileDownload.I \
|
p3dFileDownload.h p3dFileDownload.I \
|
||||||
@ -64,6 +65,7 @@
|
|||||||
handleStream.cxx handleStream.h handleStream.I \
|
handleStream.cxx handleStream.h handleStream.I \
|
||||||
handleStreamBuf.cxx handleStreamBuf.h \
|
handleStreamBuf.cxx handleStreamBuf.h \
|
||||||
p3d_lock.h p3d_plugin.h \
|
p3d_lock.h p3d_plugin.h \
|
||||||
|
p3d_plugin_config.h \
|
||||||
p3dCInstance.cxx \
|
p3dCInstance.cxx \
|
||||||
p3dCInstance.h p3dCInstance.I \
|
p3dCInstance.h p3dCInstance.I \
|
||||||
p3dPythonRun.cxx p3dPythonRun.h p3dPythonRun.I
|
p3dPythonRun.cxx p3dPythonRun.h p3dPythonRun.I
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
#include "load_plugin.h"
|
#include "load_plugin.h"
|
||||||
#include "p3d_plugin_config.h"
|
#include "p3d_plugin_config.h"
|
||||||
|
|
||||||
|
#include "assert.h"
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
@ -62,6 +64,47 @@ get_plugin_basename() {
|
|||||||
return default_plugin_filename + dll_ext;
|
return default_plugin_filename + dll_ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: is_pathsep
|
||||||
|
// Description: Returns true if the indicated character is a path
|
||||||
|
// separator character (e.g. slash or backslash), false
|
||||||
|
// otherwise.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
static inline bool
|
||||||
|
is_pathsep(char ch) {
|
||||||
|
if (ch == '/') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#ifdef _WIN32
|
||||||
|
if (ch == '\\') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: find_extension_dot
|
||||||
|
// Description: Returns the position in the string of the dot before
|
||||||
|
// the filename extension; that is, the position of the
|
||||||
|
// rightmost dot that is right of the rightmost slash
|
||||||
|
// (or backslash, on Windows). Returns string::npos if
|
||||||
|
// there is no extension.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
static size_t
|
||||||
|
find_extension_dot(const string &filename) {
|
||||||
|
size_t p = filename.length();
|
||||||
|
while (p > 0 && !is_pathsep(filename[p - 1])) {
|
||||||
|
--p;
|
||||||
|
if (filename[p] == '.') {
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return string::npos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: load_plugin
|
// Function: load_plugin
|
||||||
// Description: Loads the plugin and assigns all of the function
|
// Description: Loads the plugin and assigns all of the function
|
||||||
@ -83,6 +126,18 @@ load_plugin(const string &p3d_plugin_filename) {
|
|||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
assert(module == NULL);
|
assert(module == NULL);
|
||||||
|
|
||||||
|
// On Windows, the filename passed to LoadLibrary() must have an
|
||||||
|
// extension, or a default ".DLL" will be implicitly added. If the
|
||||||
|
// file actually has no extension, we must add "." to avoid this.
|
||||||
|
|
||||||
|
// Check whether the filename has an extension.
|
||||||
|
size_t extension_dot = find_extension_dot(filename);
|
||||||
|
if (extension_dot == string::npos) {
|
||||||
|
// No extension.
|
||||||
|
filename += ".";
|
||||||
|
}
|
||||||
|
|
||||||
module = LoadLibrary(filename.c_str());
|
module = LoadLibrary(filename.c_str());
|
||||||
if (module == NULL) {
|
if (module == NULL) {
|
||||||
// Couldn't load the DLL.
|
// Couldn't load the DLL.
|
||||||
|
@ -240,7 +240,7 @@ start_p3dpython() {
|
|||||||
if (p3dpython.empty()) {
|
if (p3dpython.empty()) {
|
||||||
p3dpython = _python_root_dir + "/p3dpython";
|
p3dpython = _python_root_dir + "/p3dpython";
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
p3dpython += ".exe"
|
p3dpython += ".exe";
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,12 +13,12 @@
|
|||||||
|
|
||||||
/* The filename(s) to generate output to when the plugin is running.
|
/* The filename(s) to generate output to when the plugin is running.
|
||||||
For debugging purposes only. */
|
For debugging purposes only. */
|
||||||
#$[]define P3D_PLUGIN_LOGFILE1 "$[osfilename $[P3D_PLUGIN_LOGFILE1]]"
|
#$[]define P3D_PLUGIN_LOGFILE1 "$[subst \,\\,$[osfilename $[P3D_PLUGIN_LOGFILE1]]]"
|
||||||
#$[]define P3D_PLUGIN_LOGFILE2 "$[osfilename $[P3D_PLUGIN_LOGFILE2]]"
|
#$[]define P3D_PLUGIN_LOGFILE2 "$[subst \,\\,$[osfilename $[P3D_PLUGIN_LOGFILE2]]]"
|
||||||
|
|
||||||
/* Temporary: the location at which p3dpython.exe can be found. Empty
|
/* Temporary: the location at which p3dpython.exe can be found. Empty
|
||||||
string for the default. */
|
string for the default. */
|
||||||
#$[]define P3D_PLUGIN_P3DPYTHON "$[osfilename $[P3D_PLUGIN_P3DPYTHON]]"
|
#$[]define P3D_PLUGIN_P3DPYTHON "$[subst \,\\,$[osfilename $[P3D_PLUGIN_P3DPYTHON]]]"
|
||||||
|
|
||||||
/* The string that corresponds to this particular platform. */
|
/* The string that corresponds to this particular platform. */
|
||||||
#if $[not $[P3D_PLUGIN_PLATFORM]]
|
#if $[not $[P3D_PLUGIN_PLATFORM]]
|
||||||
|
@ -47,14 +47,16 @@ PPInstance(NPMIMEType pluginType, NPP instance, uint16 mode,
|
|||||||
_got_instance_data = false;
|
_got_instance_data = false;
|
||||||
_got_window = false;
|
_got_window = false;
|
||||||
|
|
||||||
// Start the plugin DLL downloading.
|
if (!is_plugin_loaded()) {
|
||||||
string url = P3D_PLUGIN_DOWNLOAD;
|
// Start the plugin DLL downloading.
|
||||||
url += P3D_PLUGIN_PLATFORM;
|
string url = P3D_PLUGIN_DOWNLOAD;
|
||||||
url += "/";
|
url += P3D_PLUGIN_PLATFORM;
|
||||||
url += get_plugin_basename();
|
url += "/";
|
||||||
|
url += get_plugin_basename();
|
||||||
PPDownloadRequest *req = new PPDownloadRequest(PPDownloadRequest::RT_core_dll);
|
|
||||||
browser->geturlnotify(_npp_instance, url.c_str(), NULL, req);
|
PPDownloadRequest *req = new PPDownloadRequest(PPDownloadRequest::RT_core_dll);
|
||||||
|
browser->geturlnotify(_npp_instance, url.c_str(), NULL, req);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -211,6 +213,7 @@ stream_as_file(NPStream *stream, const char *fname) {
|
|||||||
if (!load_plugin(filename)) {
|
if (!load_plugin(filename)) {
|
||||||
logfile << "Unable to launch core API.\n";
|
logfile << "Unable to launch core API.\n";
|
||||||
}
|
}
|
||||||
|
create_instance();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PPDownloadRequest::RT_instance_data:
|
case PPDownloadRequest::RT_instance_data:
|
||||||
|
@ -194,7 +194,7 @@ NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream,
|
|||||||
PPInstance *inst = (PPInstance *)(instance->pdata);
|
PPInstance *inst = (PPInstance *)(instance->pdata);
|
||||||
assert(inst != NULL);
|
assert(inst != NULL);
|
||||||
|
|
||||||
return inst->new_stream(type, stream, seekable, stype);
|
return inst->new_stream(type, stream, seekable != 0, stype);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
x
Reference in New Issue
Block a user