mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
Merge remote-tracking branch 'origin/release/1.9.x'
This commit is contained in:
commit
6728e5ecbe
@ -1,3 +1,21 @@
|
|||||||
|
------------------------ RELEASE 1.9.3 ------------------------
|
||||||
|
|
||||||
|
This issue fixes several bugs that were still found in 1.9.2.
|
||||||
|
|
||||||
|
* Fix crash when running in Steam on Linux when using OpenAL
|
||||||
|
* Fix crash using wx/tkinter on Mac as long as want-wx/tk is set
|
||||||
|
* Fix loading models from 'models' package with models/ prefix
|
||||||
|
* Fix random crashes in task system
|
||||||
|
* Fix memory leaks in BulletTriangleMesh
|
||||||
|
* Fix loading old models with MovingPart<LMatrix4f>
|
||||||
|
* Improve performance of CPU vertex animation somewhat
|
||||||
|
* Show framebuffer properties when fbprop request fails
|
||||||
|
* Fix hang on exit when using Python task on threaded task chain
|
||||||
|
* Fix inability to get RGBA renderbuffer in certain cases
|
||||||
|
* Work around GLSL issue with #pragma and certain Intel drivers
|
||||||
|
* Improve performance of texture load and store operations
|
||||||
|
* Fix crashes with pbuffers on Intel cards on Windows
|
||||||
|
|
||||||
------------------------ RELEASE 1.9.2 ------------------------
|
------------------------ RELEASE 1.9.2 ------------------------
|
||||||
|
|
||||||
This is a minor bugfix release, fixing a few minor issues that
|
This is a minor bugfix release, fixing a few minor issues that
|
||||||
|
@ -597,6 +597,9 @@ remove_all_windows() {
|
|||||||
// And, hey, let's stop the vertex paging threads, if any.
|
// And, hey, let's stop the vertex paging threads, if any.
|
||||||
VertexDataPage::stop_threads();
|
VertexDataPage::stop_threads();
|
||||||
|
|
||||||
|
// Stopping the tasks means we have to release the Python GIL while
|
||||||
|
// this method runs (hence it is marked BLOCKING), so that any
|
||||||
|
// Python tasks on other threads won't deadlock grabbing the GIL.
|
||||||
AsyncTaskManager::get_global_ptr()->stop_threads();
|
AsyncTaskManager::get_global_ptr()->stop_threads();
|
||||||
|
|
||||||
#ifdef DO_PSTATS
|
#ifdef DO_PSTATS
|
||||||
|
@ -53,7 +53,7 @@ class Texture;
|
|||||||
class EXPCL_PANDA_DISPLAY GraphicsEngine : public ReferenceCount {
|
class EXPCL_PANDA_DISPLAY GraphicsEngine : public ReferenceCount {
|
||||||
PUBLISHED:
|
PUBLISHED:
|
||||||
GraphicsEngine(Pipeline *pipeline = NULL);
|
GraphicsEngine(Pipeline *pipeline = NULL);
|
||||||
~GraphicsEngine();
|
BLOCKING ~GraphicsEngine();
|
||||||
|
|
||||||
void set_threading_model(const GraphicsThreadingModel &threading_model);
|
void set_threading_model(const GraphicsThreadingModel &threading_model);
|
||||||
GraphicsThreadingModel get_threading_model() const;
|
GraphicsThreadingModel get_threading_model() const;
|
||||||
@ -94,7 +94,7 @@ PUBLISHED:
|
|||||||
|
|
||||||
bool add_window(GraphicsOutput *window, int sort);
|
bool add_window(GraphicsOutput *window, int sort);
|
||||||
bool remove_window(GraphicsOutput *window);
|
bool remove_window(GraphicsOutput *window);
|
||||||
void remove_all_windows();
|
BLOCKING void remove_all_windows();
|
||||||
void reset_all_windows(bool swapchain);
|
void reset_all_windows(bool swapchain);
|
||||||
|
|
||||||
bool is_empty() const;
|
bool is_empty() const;
|
||||||
|
@ -1625,11 +1625,11 @@ cg_compile_entry_point(const char *entry, const ShaderCaps &caps,
|
|||||||
compiler_args[nargs++] = "ATI_draw_buffers";
|
compiler_args[nargs++] = "ATI_draw_buffers";
|
||||||
}
|
}
|
||||||
|
|
||||||
char version_arg[16];
|
string version_arg;
|
||||||
if (!cg_glsl_version.empty() && active != CG_PROFILE_UNKNOWN &&
|
if (!cg_glsl_version.empty() && active != CG_PROFILE_UNKNOWN &&
|
||||||
cgGetProfileProperty((CGprofile) active, CG_IS_GLSL_PROFILE)) {
|
cgGetProfileProperty((CGprofile) active, CG_IS_GLSL_PROFILE)) {
|
||||||
|
|
||||||
string version_arg("version=");
|
version_arg = "version=";
|
||||||
version_arg += cg_glsl_version;
|
version_arg += cg_glsl_version;
|
||||||
|
|
||||||
compiler_args[nargs++] = "-po";
|
compiler_args[nargs++] = "-po";
|
||||||
|
@ -393,9 +393,8 @@ INLINE_LINMATH size_t FLOATNAME(LVecBase2)::
|
|||||||
add_hash(size_t hash) const {
|
add_hash(size_t hash) const {
|
||||||
TAU_PROFILE("size_t LVecBase2::add_hash(size_t)", " ", TAU_USER);
|
TAU_PROFILE("size_t LVecBase2::add_hash(size_t)", " ", TAU_USER);
|
||||||
#ifdef FLOATTYPE_IS_INT
|
#ifdef FLOATTYPE_IS_INT
|
||||||
int_hash ihasher;
|
hash = int_hash::add_hash(hash, _v(0));
|
||||||
hash = ihasher.add_hash(hash, _v(0));
|
hash = int_hash::add_hash(hash, _v(1));
|
||||||
hash = ihasher.add_hash(hash, _v(1));
|
|
||||||
return hash;
|
return hash;
|
||||||
#else
|
#else
|
||||||
return add_hash(hash, NEARLY_ZERO(FLOATTYPE));
|
return add_hash(hash, NEARLY_ZERO(FLOATTYPE));
|
||||||
|
@ -528,10 +528,9 @@ INLINE_LINMATH size_t FLOATNAME(LVecBase3)::
|
|||||||
add_hash(size_t hash) const {
|
add_hash(size_t hash) const {
|
||||||
TAU_PROFILE("size_t LVecBase3::add_hash(size_t)", " ", TAU_USER);
|
TAU_PROFILE("size_t LVecBase3::add_hash(size_t)", " ", TAU_USER);
|
||||||
#ifdef FLOATTYPE_IS_INT
|
#ifdef FLOATTYPE_IS_INT
|
||||||
int_hash ihasher;
|
hash = int_hash::add_hash(hash, _v(0));
|
||||||
hash = ihasher.add_hash(hash, _v(0));
|
hash = int_hash::add_hash(hash, _v(1));
|
||||||
hash = ihasher.add_hash(hash, _v(1));
|
hash = int_hash::add_hash(hash, _v(2));
|
||||||
hash = ihasher.add_hash(hash, _v(2));
|
|
||||||
return hash;
|
return hash;
|
||||||
#else
|
#else
|
||||||
return add_hash(hash, NEARLY_ZERO(FLOATTYPE));
|
return add_hash(hash, NEARLY_ZERO(FLOATTYPE));
|
||||||
|
@ -521,11 +521,10 @@ INLINE_LINMATH size_t FLOATNAME(LVecBase4)::
|
|||||||
add_hash(size_t hash) const {
|
add_hash(size_t hash) const {
|
||||||
TAU_PROFILE("size_t LVecBase4::add_hash(size_t)", " ", TAU_USER);
|
TAU_PROFILE("size_t LVecBase4::add_hash(size_t)", " ", TAU_USER);
|
||||||
#ifdef FLOATTYPE_IS_INT
|
#ifdef FLOATTYPE_IS_INT
|
||||||
int_hash ihasher;
|
hash = int_hash::add_hash(hash, _v(0));
|
||||||
hash = ihasher.add_hash(hash, _v(0));
|
hash = int_hash::add_hash(hash, _v(1));
|
||||||
hash = ihasher.add_hash(hash, _v(1));
|
hash = int_hash::add_hash(hash, _v(2));
|
||||||
hash = ihasher.add_hash(hash, _v(2));
|
hash = int_hash::add_hash(hash, _v(3));
|
||||||
hash = ihasher.add_hash(hash, _v(3));
|
|
||||||
return hash;
|
return hash;
|
||||||
#else
|
#else
|
||||||
return add_hash(hash, NEARLY_ZERO(FLOATTYPE));
|
return add_hash(hash, NEARLY_ZERO(FLOATTYPE));
|
||||||
|
@ -226,7 +226,7 @@ BMPreadinfoheader(
|
|||||||
* for the required total.
|
* for the required total.
|
||||||
*/
|
*/
|
||||||
if (classv != C_OS2) {
|
if (classv != C_OS2) {
|
||||||
for (int i = 0; i < cbFix - 16; i += 4) {
|
for (int i = 0; i < (int)cbFix - 16; i += 4) {
|
||||||
GetLong(fp);
|
GetLong(fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -649,11 +649,11 @@ writePackedRawRow(ostream * const fileP,
|
|||||||
const unsigned char * const packed_bits,
|
const unsigned char * const packed_bits,
|
||||||
int const cols) {
|
int const cols) {
|
||||||
|
|
||||||
int bytesWritten;
|
|
||||||
fileP->write((const char *)packed_bits, pbm_packed_bytes(cols));
|
fileP->write((const char *)packed_bits, pbm_packed_bytes(cols));
|
||||||
if (fileP->fail())
|
if (fileP->fail()) {
|
||||||
pm_error("I/O error writing packed row to raw PBM file.");
|
pm_error("I/O error writing packed row to raw PBM file.");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
writePbmRowRaw(ostream * const fileP,
|
writePbmRowRaw(ostream * const fileP,
|
||||||
|
@ -41,6 +41,7 @@ get_context() const {
|
|||||||
return py_context.ptr();
|
return py_context.ptr();
|
||||||
|
|
||||||
} catch (const python::error_already_set &e) {
|
} catch (const python::error_already_set &e) {
|
||||||
|
(void)e;
|
||||||
// Return NULL, which will trigger the exception in Python
|
// Return NULL, which will trigger the exception in Python
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user