mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
Fix link issues and crashes with Android build
This commit is contained in:
parent
ffaa7419ec
commit
40739c6b5f
@ -1171,7 +1171,7 @@ def CompileCxx(obj,src,opts):
|
|||||||
if (opt=="ALWAYS") or (opt in opts): cmd += ' -D' + var + '=' + val
|
if (opt=="ALWAYS") or (opt in opts): cmd += ' -D' + var + '=' + val
|
||||||
for x in ipath: cmd += ' -I' + x
|
for x in ipath: cmd += ' -I' + x
|
||||||
|
|
||||||
if not GetLinkAllStatic():
|
if not GetLinkAllStatic() and 'NOHIDDEN' not in opts:
|
||||||
cmd += ' -fvisibility=hidden'
|
cmd += ' -fvisibility=hidden'
|
||||||
|
|
||||||
# Mac-specific flags.
|
# Mac-specific flags.
|
||||||
@ -1627,7 +1627,8 @@ def CompileLink(dll, obj, opts):
|
|||||||
cmd += ' -o ' + dll + ' -L' + GetOutputDir() + '/lib -L' + GetOutputDir() + '/tmp'
|
cmd += ' -o ' + dll + ' -L' + GetOutputDir() + '/lib -L' + GetOutputDir() + '/tmp'
|
||||||
else:
|
else:
|
||||||
cmd = cxx + ' -shared'
|
cmd = cxx + ' -shared'
|
||||||
if ("MODULE" not in opts): cmd += " -Wl,-soname=" + os.path.basename(dll)
|
if "MODULE" not in opts or GetTarget() == 'android':
|
||||||
|
cmd += " -Wl,-soname=" + os.path.basename(dll)
|
||||||
cmd += ' -o ' + dll + ' -L' + GetOutputDir() + '/lib -L' + GetOutputDir() + '/tmp'
|
cmd += ' -o ' + dll + ' -L' + GetOutputDir() + '/lib -L' + GetOutputDir() + '/tmp'
|
||||||
|
|
||||||
for x in obj:
|
for x in obj:
|
||||||
@ -4806,7 +4807,7 @@ if (not RUNTIME and GetTarget() == 'android'):
|
|||||||
TargetAdd('libp3android.dll', input=COMMON_PANDA_LIBS)
|
TargetAdd('libp3android.dll', input=COMMON_PANDA_LIBS)
|
||||||
TargetAdd('libp3android.dll', opts=['JNIGRAPHICS'])
|
TargetAdd('libp3android.dll', opts=['JNIGRAPHICS'])
|
||||||
|
|
||||||
TargetAdd('android_native_app_glue.obj', opts=OPTS, input='android_native_app_glue.c')
|
TargetAdd('android_native_app_glue.obj', opts=OPTS + ['NOHIDDEN'], input='android_native_app_glue.c')
|
||||||
TargetAdd('android_main.obj', opts=OPTS, input='android_main.cxx')
|
TargetAdd('android_main.obj', opts=OPTS, input='android_main.cxx')
|
||||||
|
|
||||||
if (not RTDIST and PkgSkip("PVIEW")==0):
|
if (not RTDIST and PkgSkip("PVIEW")==0):
|
||||||
|
@ -23,10 +23,10 @@
|
|||||||
|
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
|
|
||||||
NotifyCategoryDeclNoExport(android);
|
NotifyCategoryDecl(android, EXPORT_CLASS, EXPORT_TEMPL);
|
||||||
extern void init_libandroid();
|
extern void init_libandroid();
|
||||||
|
|
||||||
extern struct android_app* panda_android_app;
|
extern EXPORT_CLASS struct android_app* panda_android_app;
|
||||||
|
|
||||||
extern jclass jni_PandaActivity;
|
extern jclass jni_PandaActivity;
|
||||||
extern jmethodID jni_PandaActivity_readBitmapHeader;
|
extern jmethodID jni_PandaActivity_readBitmapHeader;
|
||||||
|
@ -16,13 +16,19 @@
|
|||||||
|
|
||||||
#include <istream>
|
#include <istream>
|
||||||
|
|
||||||
|
#if __GNUC__ >= 4
|
||||||
|
#define EXPORT_JNI extern "C" __attribute__((visibility("default")))
|
||||||
|
#else
|
||||||
|
#define EXPORT_JNI extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: NativeIStream::nativeGet
|
// Function: NativeIStream::nativeGet
|
||||||
// Access: Private, Static
|
// Access: Private, Static
|
||||||
// Description: Reads a single character from the istream.
|
// Description: Reads a single character from the istream.
|
||||||
// Should return -1 on EOF.
|
// Should return -1 on EOF.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
extern "C" jint
|
EXPORT_JNI jint
|
||||||
Java_org_panda3d_android_NativeIStream_nativeGet(JNIEnv *env, jclass clazz, jlong ptr) {
|
Java_org_panda3d_android_NativeIStream_nativeGet(JNIEnv *env, jclass clazz, jlong ptr) {
|
||||||
std::istream *stream = (std::istream *) ptr;
|
std::istream *stream = (std::istream *) ptr;
|
||||||
|
|
||||||
@ -37,7 +43,7 @@ Java_org_panda3d_android_NativeIStream_nativeGet(JNIEnv *env, jclass clazz, jlon
|
|||||||
// the actual number of bytes that were read.
|
// the actual number of bytes that were read.
|
||||||
// Should return -1 on EOF.
|
// Should return -1 on EOF.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
extern "C" jint
|
EXPORT_JNI jint
|
||||||
Java_org_panda3d_android_NativeIStream_nativeRead(JNIEnv *env, jclass clazz, jlong ptr, jbyteArray byte_array, jint offset, jint length) {
|
Java_org_panda3d_android_NativeIStream_nativeRead(JNIEnv *env, jclass clazz, jlong ptr, jbyteArray byte_array, jint offset, jint length) {
|
||||||
std::istream *stream = (std::istream *) ptr;
|
std::istream *stream = (std::istream *) ptr;
|
||||||
jbyte *buffer = (jbyte *) env->GetPrimitiveArrayCritical(byte_array, NULL);
|
jbyte *buffer = (jbyte *) env->GetPrimitiveArrayCritical(byte_array, NULL);
|
||||||
@ -63,7 +69,7 @@ Java_org_panda3d_android_NativeIStream_nativeRead(JNIEnv *env, jclass clazz, jlo
|
|||||||
// Description: Skips ahead N bytes in the stream. Returns the
|
// Description: Skips ahead N bytes in the stream. Returns the
|
||||||
// actual number of skipped bytes.
|
// actual number of skipped bytes.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
extern "C" jlong
|
EXPORT_JNI jlong
|
||||||
Java_org_panda3d_android_NativeIStream_nativeIgnore(JNIEnv *env, jclass clazz, jlong ptr, jlong offset) {
|
Java_org_panda3d_android_NativeIStream_nativeIgnore(JNIEnv *env, jclass clazz, jlong ptr, jlong offset) {
|
||||||
std::istream *stream = (std::istream *) ptr;
|
std::istream *stream = (std::istream *) ptr;
|
||||||
stream->ignore(offset);
|
stream->ignore(offset);
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include <android/window.h>
|
#include <android/window.h>
|
||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
|
|
||||||
extern struct android_app* panda_android_app;
|
extern IMPORT_CLASS struct android_app* panda_android_app;
|
||||||
|
|
||||||
TypeHandle AndroidGraphicsWindow::_type_handle;
|
TypeHandle AndroidGraphicsWindow::_type_handle;
|
||||||
|
|
||||||
|
@ -6583,9 +6583,12 @@ do_issue_depth_test() {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void CLP(GraphicsStateGuardian)::
|
void CLP(GraphicsStateGuardian)::
|
||||||
do_issue_alpha_test() {
|
do_issue_alpha_test() {
|
||||||
|
#ifndef OPENGLES_1
|
||||||
if (_target_shader->get_flag(ShaderAttrib::F_subsume_alpha_test)) {
|
if (_target_shader->get_flag(ShaderAttrib::F_subsume_alpha_test)) {
|
||||||
enable_alpha_test(false);
|
enable_alpha_test(false);
|
||||||
} else {
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
const AlphaTestAttrib *target_alpha_test;
|
const AlphaTestAttrib *target_alpha_test;
|
||||||
_target_rs->get_attrib_def(target_alpha_test);
|
_target_rs->get_attrib_def(target_alpha_test);
|
||||||
|
|
||||||
@ -6846,9 +6849,13 @@ do_issue_blending() {
|
|||||||
|
|
||||||
unsigned int color_channels =
|
unsigned int color_channels =
|
||||||
target_color_write->get_channels() & _color_write_mask;
|
target_color_write->get_channels() & _color_write_mask;
|
||||||
|
|
||||||
|
#ifndef OPENGLES_1
|
||||||
if (_target_shader->get_flag(ShaderAttrib::F_disable_alpha_write)) {
|
if (_target_shader->get_flag(ShaderAttrib::F_disable_alpha_write)) {
|
||||||
color_channels &= ~(ColorWriteAttrib::C_alpha);
|
color_channels &= ~(ColorWriteAttrib::C_alpha);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (color_channels == ColorWriteAttrib::C_off) {
|
if (color_channels == ColorWriteAttrib::C_off) {
|
||||||
int color_write_slot = ColorWriteAttrib::get_class_slot();
|
int color_write_slot = ColorWriteAttrib::get_class_slot();
|
||||||
enable_multisample_alpha_one(false);
|
enable_multisample_alpha_one(false);
|
||||||
@ -9875,9 +9882,12 @@ set_state_and_transform(const RenderState *target,
|
|||||||
#ifdef SUPPORT_FIXED_FUNCTION
|
#ifdef SUPPORT_FIXED_FUNCTION
|
||||||
int alpha_test_slot = AlphaTestAttrib::get_class_slot();
|
int alpha_test_slot = AlphaTestAttrib::get_class_slot();
|
||||||
if (_target_rs->get_attrib(alpha_test_slot) != _state_rs->get_attrib(alpha_test_slot) ||
|
if (_target_rs->get_attrib(alpha_test_slot) != _state_rs->get_attrib(alpha_test_slot) ||
|
||||||
!_state_mask.get_bit(alpha_test_slot) ||
|
!_state_mask.get_bit(alpha_test_slot)
|
||||||
(_target_shader->get_flag(ShaderAttrib::F_subsume_alpha_test) !=
|
#ifndef OPENGLES_1
|
||||||
_state_shader->get_flag(ShaderAttrib::F_subsume_alpha_test))) {
|
|| (_target_shader->get_flag(ShaderAttrib::F_subsume_alpha_test) !=
|
||||||
|
_state_shader->get_flag(ShaderAttrib::F_subsume_alpha_test))
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
//PStatGPUTimer timer(this, _draw_set_state_alpha_test_pcollector);
|
//PStatGPUTimer timer(this, _draw_set_state_alpha_test_pcollector);
|
||||||
do_issue_alpha_test();
|
do_issue_alpha_test();
|
||||||
_state_mask.set_bit(alpha_test_slot);
|
_state_mask.set_bit(alpha_test_slot);
|
||||||
@ -9981,9 +9991,12 @@ set_state_and_transform(const RenderState *target,
|
|||||||
_target_rs->get_attrib(color_blend_slot) != _state_rs->get_attrib(color_blend_slot) ||
|
_target_rs->get_attrib(color_blend_slot) != _state_rs->get_attrib(color_blend_slot) ||
|
||||||
!_state_mask.get_bit(transparency_slot) ||
|
!_state_mask.get_bit(transparency_slot) ||
|
||||||
!_state_mask.get_bit(color_write_slot) ||
|
!_state_mask.get_bit(color_write_slot) ||
|
||||||
!_state_mask.get_bit(color_blend_slot) ||
|
!_state_mask.get_bit(color_blend_slot)
|
||||||
(_target_shader->get_flag(ShaderAttrib::F_disable_alpha_write) !=
|
#ifndef OPENGLES_1
|
||||||
_state_shader->get_flag(ShaderAttrib::F_disable_alpha_write))) {
|
|| (_target_shader->get_flag(ShaderAttrib::F_disable_alpha_write) !=
|
||||||
|
_state_shader->get_flag(ShaderAttrib::F_disable_alpha_write))
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
//PStatGPUTimer timer(this, _draw_set_state_blending_pcollector);
|
//PStatGPUTimer timer(this, _draw_set_state_blending_pcollector);
|
||||||
do_issue_blending();
|
do_issue_blending();
|
||||||
_state_mask.set_bit(transparency_slot);
|
_state_mask.set_bit(transparency_slot);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user