--- a/content/media/omx/MediaOmxReader.h
+++ b/content/media/omx/MediaOmxReader.h
@@ -10,17 +10,17 @@
#include "MediaDecoderReader.h"
#include "nsRect.h"
#include "mozilla/dom/AudioChannelBinding.h"
#include <ui/GraphicBuffer.h>
#include <stagefright/MediaSource.h>
namespace android {
class OmxDecoder;
-class MediaExtractor;
+class MOZ_EXPORT MediaExtractor;
}
namespace mozilla {
namespace dom {
class TimeRanges;
}
--- a/dom/camera/GonkRecorder.h
+++ b/dom/camera/GonkRecorder.h
@@ -26,21 +26,21 @@
#include <system/audio.h>
#include "mozilla/RefPtr.h"
#include "GonkCameraHwMgr.h"
namespace android {
class GonkCameraSource;
-struct MediaSource;
-struct MediaWriter;
-class MetaData;
-struct AudioSource;
-class MediaProfiles;
+struct MOZ_EXPORT MediaSource;
+struct MOZ_EXPORT MediaWriter;
+class MOZ_EXPORT MetaData;
+struct MOZ_EXPORT AudioSource;
+class MOZ_EXPORT MediaProfiles;
class GonkCameraHardware;
struct GonkRecorder {
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(GonkRecorder)
GonkRecorder();
virtual status_t init();
--- a/js/src/jit/AsmJSModule.cpp
+++ b/js/src/jit/AsmJSModule.cpp
@@ -162,20 +162,20 @@ InvokeFromAsmJS_ToInt32(JSContext *cx, i
int32_t
InvokeFromAsmJS_ToNumber(JSContext *cx, int32_t exitIndex, int32_t argc, Value *argv);
}
#if defined(JS_CODEGEN_ARM)
extern "C" {
-extern int64_t
+extern MOZ_EXPORT int64_t
__aeabi_idivmod(int, int);
-extern int64_t
+extern MOZ_EXPORT int64_t
__aeabi_uidivmod(int, int);
}
#endif
template <class F>
static inline void *
FuncCast(F *pf)
--- a/js/src/jit/arm/BaselineIC-arm.cpp
+++ b/js/src/jit/arm/BaselineIC-arm.cpp
@@ -66,17 +66,17 @@ ICCompare_Double::Compiler::generateStub
masm.bind(&failure);
EmitStubGuardFailure(masm);
return true;
}
// ICBinaryArith_Int32
extern "C" {
- extern int64_t __aeabi_idivmod(int,int);
+ extern MOZ_EXPORT int64_t __aeabi_idivmod(int,int);
}
bool
ICBinaryArith_Int32::Compiler::generateStubCode(MacroAssembler &masm)
{
// Guard that R0 is an integer and R1 is an integer.
Label failure;
masm.branchTestInt32(Assembler::NotEqual, R0, &failure);
--- a/js/src/jit/arm/CodeGenerator-arm.cpp
+++ b/js/src/jit/arm/CodeGenerator-arm.cpp
@@ -614,18 +614,18 @@ CodeGeneratorARM::visitDivI(LDivI *ins)
}
masm.bind(&done);
return true;
}
extern "C" {
- extern int64_t __aeabi_idivmod(int,int);
- extern int64_t __aeabi_uidivmod(int,int);
+ extern MOZ_EXPORT int64_t __aeabi_idivmod(int,int);
+ extern MOZ_EXPORT int64_t __aeabi_uidivmod(int,int);
}
bool
CodeGeneratorARM::visitSoftDivI(LSoftDivI *ins)
{
// Extract the registers from this instruction
Register lhs = ToRegister(ins->lhs());
Register rhs = ToRegister(ins->rhs());
--- a/mozglue/android/APKOpen.h
+++ b/mozglue/android/APKOpen.h
@@ -13,15 +13,15 @@
struct mapping_info {
char * name;
uintptr_t base;
size_t len;
size_t offset;
};
-const struct mapping_info * getLibraryMapping();
+NS_EXPORT const struct mapping_info * getLibraryMapping();
static const int SUCCESS = 0;
static const int FAILURE = 1;
void JNI_Throw(JNIEnv* jenv, const char* classname, const char* msg);
#endif /* APKOpen_h */
--- a/mozglue/build/BionicGlue.cpp
+++ b/mozglue/build/BionicGlue.cpp
@@ -92,16 +92,18 @@ WRAP(pthread_atfork)(void (*prepare)(voi
funcs.parent = parent;
funcs.child = child;
if (!atfork.capacity())
atfork.reserve(1);
atfork.push_back(funcs);
return 0;
}
+extern "C" NS_EXPORT pid_t __fork(void);
+
extern "C" NS_EXPORT pid_t
WRAP(fork)(void)
{
pid_t pid;
for (auto it = atfork.rbegin();
it < atfork.rend(); ++it)
if (it->prepare)
it->prepare();
--- a/mozglue/build/Nuwa.cpp
+++ b/mozglue/build/Nuwa.cpp
@@ -36,16 +36,17 @@ extern "C" MFBT_API int tgkill(pid_t tgi
* Provides the wrappers to a selected set of pthread and system-level functions
* as the basis for implementing Zygote-like preforking mechanism.
*/
/**
* Real functions for the wrappers.
*/
extern "C" {
+#pragma GCC visibility push(default)
int __real_pthread_create(pthread_t *thread,
const pthread_attr_t *attr,
void *(*start_routine) (void *),
void *arg);
int __real_pthread_key_create(pthread_key_t *key, void (*destructor)(void*));
int __real_pthread_key_delete(pthread_key_t key);
pthread_t __real_pthread_self();
int __real_pthread_join(pthread_t thread, void **retval);
@@ -64,16 +65,17 @@ int __real___pthread_cond_timedwait(pthr
int __real_pthread_mutex_lock(pthread_mutex_t *mtx);
int __real_poll(struct pollfd *fds, nfds_t nfds, int timeout);
int __real_epoll_create(int size);
int __real_socketpair(int domain, int type, int protocol, int sv[2]);
int __real_pipe2(int __pipedes[2], int flags);
int __real_pipe(int __pipedes[2]);
int __real_epoll_ctl(int aEpollFd, int aOp, int aFd, struct epoll_event *aEvent);
int __real_close(int aFd);
+#pragma GCC visibility pop
}
#define REAL(s) __real_##s
/**
* A Nuwa process is started by preparing. After preparing, it waits
* for all threads becoming frozen. Then, it is ready while all
* threads are frozen.
--- a/mozglue/linker/ElfLoader.cpp
+++ b/mozglue/linker/ElfLoader.cpp
@@ -29,17 +29,17 @@ inline int sigaltstack(const stack_t *ss
return syscall(__NR_sigaltstack, ss, oss);
}
} /* extern "C" */
#endif /* __ANDROID_API__ */
#endif /* ANDROID */
#ifdef __ARM_EABI__
-extern "C" const void *
+extern "C" MOZ_EXPORT const void *
__gnu_Unwind_Find_exidx(void *pc, int *pcount) __attribute__((weak));
#endif
using namespace mozilla;
/**
* dlfcn.h replacements functions
*/
--- a/netwerk/protocol/rtsp/rtsp/AAMRAssembler.h
+++ b/netwerk/protocol/rtsp/rtsp/AAMRAssembler.h
@@ -13,26 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_AMR_ASSEMBLER_H_
#define A_AMR_ASSEMBLER_H_
+#include "mozilla/Types.h"
#include "ARTPAssembler.h"
#include <utils/List.h>
#include <stdint.h>
namespace android {
-struct AMessage;
-struct AString;
+struct MOZ_EXPORT AMessage;
+struct MOZ_EXPORT AString;
struct AAMRAssembler : public ARTPAssembler {
AAMRAssembler(
const sp<AMessage> ¬ify, bool isWide,
const AString ¶ms);
protected:
virtual ~AAMRAssembler();
--- a/netwerk/protocol/rtsp/rtsp/AAVCAssembler.h
+++ b/netwerk/protocol/rtsp/rtsp/AAVCAssembler.h
@@ -13,25 +13,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_AVC_ASSEMBLER_H_
#define A_AVC_ASSEMBLER_H_
+#include "mozilla/Types.h"
#include "ARTPAssembler.h"
#include <utils/List.h>
#include <utils/RefBase.h>
namespace android {
-struct ABuffer;
-struct AMessage;
+struct MOZ_EXPORT ABuffer;
+struct MOZ_EXPORT AMessage;
struct AAVCAssembler : public ARTPAssembler {
AAVCAssembler(const sp<AMessage> ¬ify);
protected:
virtual ~AAVCAssembler();
virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source);
--- a/netwerk/protocol/rtsp/rtsp/AH263Assembler.h
+++ b/netwerk/protocol/rtsp/rtsp/AH263Assembler.h
@@ -13,25 +13,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_H263_ASSEMBLER_H_
#define A_H263_ASSEMBLER_H_
+#include "mozilla/Types.h"
#include "ARTPAssembler.h"
#include <utils/List.h>
#include <stdint.h>
namespace android {
-struct AMessage;
+struct MOZ_EXPORT AMessage;
struct AH263Assembler : public ARTPAssembler {
AH263Assembler(const sp<AMessage> ¬ify);
protected:
virtual ~AH263Assembler();
virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source);
--- a/netwerk/protocol/rtsp/rtsp/AMPEG4AudioAssembler.h
+++ b/netwerk/protocol/rtsp/rtsp/AMPEG4AudioAssembler.h
@@ -13,26 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_MPEG4_AUDIO_ASSEMBLER_H_
#define A_MPEG4_AUDIO_ASSEMBLER_H_
+#include "mozilla/Types.h"
#include "ARTPAssembler.h"
#include <utils/List.h>
#include <stdint.h>
namespace android {
-struct AMessage;
-struct AString;
+struct MOZ_EXPORT AMessage;
+struct MOZ_EXPORT AString;
struct AMPEG4AudioAssembler : public ARTPAssembler {
AMPEG4AudioAssembler(
const sp<AMessage> ¬ify, const AString ¶ms);
protected:
virtual ~AMPEG4AudioAssembler();
--- a/netwerk/protocol/rtsp/rtsp/AMPEG4ElementaryAssembler.h
+++ b/netwerk/protocol/rtsp/rtsp/AMPEG4ElementaryAssembler.h
@@ -13,27 +13,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_MPEG4_ELEM_ASSEMBLER_H_
#define A_MPEG4_ELEM_ASSEMBLER_H_
+#include "mozilla/Types.h"
#include "ARTPAssembler.h"
#include <media/stagefright/foundation/AString.h>
#include <utils/List.h>
#include <utils/RefBase.h>
namespace android {
-struct ABuffer;
-struct AMessage;
+struct MOZ_EXPORT ABuffer;
+struct MOZ_EXPORT AMessage;
struct AMPEG4ElementaryAssembler : public ARTPAssembler {
AMPEG4ElementaryAssembler(
const sp<AMessage> ¬ify, const AString &desc,
const AString ¶ms);
protected:
virtual ~AMPEG4ElementaryAssembler();
--- a/netwerk/protocol/rtsp/rtsp/ARTPAssembler.h
+++ b/netwerk/protocol/rtsp/rtsp/ARTPAssembler.h
@@ -13,22 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_RTP_ASSEMBLER_H_
#define A_RTP_ASSEMBLER_H_
+#include "mozilla/Types.h"
#include <media/stagefright/foundation/ABase.h>
#include <utils/RefBase.h>
namespace android {
-struct ABuffer;
+struct MOZ_EXPORT ABuffer;
struct ARTPSource;
struct ARTPAssembler : public RefBase {
enum AssemblyStatus {
MALFORMED_PACKET,
WRONG_SEQUENCE_NUMBER,
NOT_ENOUGH_DATA,
OK
--- a/netwerk/protocol/rtsp/rtsp/ARTPConnection.h
+++ b/netwerk/protocol/rtsp/rtsp/ARTPConnection.h
@@ -13,22 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_RTP_CONNECTION_H_
#define A_RTP_CONNECTION_H_
+#include "mozilla/Types.h"
#include <media/stagefright/foundation/AHandler.h>
#include <utils/List.h>
namespace android {
-struct ABuffer;
+struct MOZ_EXPORT ABuffer;
struct ARTPSource;
struct ASessionDescription;
struct ARTPConnection : public AHandler {
enum Flags {
kRegularlyRequestFIR = 2,
};
--- a/netwerk/protocol/rtsp/rtsp/ARTPSession.h
+++ b/netwerk/protocol/rtsp/rtsp/ARTPSession.h
@@ -13,24 +13,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_RTP_SESSION_H_
#define A_RTP_SESSION_H_
+#include "mozilla/Types.h"
#include <media/stagefright/foundation/AHandler.h>
namespace android {
struct APacketSource;
struct ARTPConnection;
struct ASessionDescription;
-struct MediaSource;
+struct MOZ_EXPORT MediaSource;
struct ARTPSession : public AHandler {
ARTPSession();
status_t setup(const sp<ASessionDescription> &desc);
size_t countTracks();
sp<MediaSource> trackAt(size_t index);
--- a/netwerk/protocol/rtsp/rtsp/ARTPSource.h
+++ b/netwerk/protocol/rtsp/rtsp/ARTPSource.h
@@ -13,26 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_RTP_SOURCE_H_
#define A_RTP_SOURCE_H_
+#include "mozilla/Types.h"
#include <stdint.h>
#include <media/stagefright/foundation/ABase.h>
#include <utils/List.h>
#include <utils/RefBase.h>
namespace android {
-struct ABuffer;
-struct AMessage;
+struct MOZ_EXPORT ABuffer;
+struct MOZ_EXPORT AMessage;
struct ARTPAssembler;
struct ASessionDescription;
struct ARTPSource : public RefBase {
ARTPSource(
uint32_t id,
const sp<ASessionDescription> &sessionDesc, size_t index,
const sp<AMessage> ¬ify);
--- a/netwerk/protocol/rtsp/rtsp/ARTPWriter.h
+++ b/netwerk/protocol/rtsp/rtsp/ARTPWriter.h
@@ -13,31 +13,32 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_RTP_WRITER_H_
#define A_RTP_WRITER_H_
+#include "mozilla/Types.h"
#include <media/stagefright/foundation/ABase.h>
#include <media/stagefright/foundation/AHandlerReflector.h>
#include <media/stagefright/foundation/AString.h>
#include <media/stagefright/foundation/base64.h>
#include <media/stagefright/MediaWriter.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define LOG_TO_FILES 0
namespace android {
-struct ABuffer;
-struct MediaBuffer;
+struct MOZ_EXPORT ABuffer;
+struct MOZ_EXPORT MediaBuffer;
struct ARTPWriter : public MediaWriter {
ARTPWriter(int fd);
virtual status_t addSource(const sp<MediaSource> &source);
virtual bool reachedEOS();
virtual status_t start(MetaData *params);
virtual status_t stop();
--- a/netwerk/protocol/rtsp/rtsp/ARTSPConnection.h
+++ b/netwerk/protocol/rtsp/rtsp/ARTSPConnection.h
@@ -13,22 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_RTSP_CONNECTION_H_
#define A_RTSP_CONNECTION_H_
+#include "mozilla/Types.h"
#include <media/stagefright/foundation/AHandler.h>
#include <media/stagefright/foundation/AString.h>
namespace android {
-struct ABuffer;
+struct MOZ_EXPORT ABuffer;
struct ARTSPResponse : public RefBase {
unsigned long mStatusCode;
AString mStatusLine;
KeyedVector<AString,AString> mHeaders;
sp<ABuffer> mContent;
};
--- a/netwerk/protocol/rtsp/rtsp/ARawAudioAssembler.h
+++ b/netwerk/protocol/rtsp/rtsp/ARawAudioAssembler.h
@@ -13,23 +13,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_RAW_AUDIO_ASSEMBLER_H_
#define A_RAW_AUDIO_ASSEMBLER_H_
+#include "mozilla/Types.h"
#include "ARTPAssembler.h"
namespace android {
-struct AMessage;
-struct AString;
-struct MetaData;
+struct MOZ_EXPORT AMessage;
+struct MOZ_EXPORT AString;
+struct MOZ_EXPORT MetaData;
struct ARawAudioAssembler : public ARTPAssembler {
ARawAudioAssembler(
const sp<AMessage> ¬ify,
const char *desc, const AString ¶ms);
static bool Supports(const char *desc);
--- a/netwerk/protocol/rtsp/rtsp/ASessionDescription.h
+++ b/netwerk/protocol/rtsp/rtsp/ASessionDescription.h
@@ -13,26 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_SESSION_DESCRIPTION_H_
#define A_SESSION_DESCRIPTION_H_
+#include "mozilla/Types.h"
#include <sys/types.h>
#include <media/stagefright/foundation/ABase.h>
#include <utils/KeyedVector.h>
#include <utils/RefBase.h>
#include <utils/Vector.h>
namespace android {
-struct AString;
+struct MOZ_EXPORT AString;
struct ASessionDescription : public RefBase {
ASessionDescription();
bool setTo(const void *data, size_t size);
bool isValid() const;
// Actually, 1 + number of tracks, as index 0 is reserved for the
--- a/netwerk/protocol/rtsp/rtsp/RTSPSource.h
+++ b/netwerk/protocol/rtsp/rtsp/RTSPSource.h
@@ -13,31 +13,32 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef RTSP_SOURCE_H_
#define RTSP_SOURCE_H_
+#include "mozilla/Types.h"
#include <utils/RefBase.h>
#include <media/stagefright/foundation/AString.h>
#include <media/stagefright/foundation/AHandlerReflector.h>
#include "nsCOMPtr.h"
#include "nsString.h"
#include "nsIStreamingProtocolController.h"
#include "nsProxyRelease.h"
namespace android {
-struct MetaData;
-struct ABuffer;
-struct ALooper;
-struct AnotherPacketSource;
+struct MOZ_EXPORT MetaData;
+struct MOZ_EXPORT ABuffer;
+struct MOZ_EXPORT ALooper;
+struct MOZ_EXPORT AnotherPacketSource;
struct RtspConnectionHandler;
class RTSPSource : public RefBase
{
public:
RTSPSource(
nsIStreamingProtocolListener *aListener,
--- a/toolkit/mozapps/update/updater/updater.cpp
+++ b/toolkit/mozapps/update/updater/updater.cpp
@@ -49,16 +49,17 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <limits.h>
#include <errno.h>
#include "updatelogging.h"
#include "mozilla/Compiler.h"
+#include "mozilla/Types.h"
// Amount of the progress bar to use in each of the 3 update stages,
// should total 100.0.
#define PROGRESS_PREPARE_SIZE 20.0f
#define PROGRESS_EXECUTE_SIZE 75.0f
#define PROGRESS_FINISH_SIZE 5.0f
// Amount of time in ms to wait for the parent process to close
@@ -94,17 +95,17 @@ void LaunchMacPostProcess(const char* aA
# include <unistd.h>
# include <android/log.h>
# include <linux/ioprio.h>
# include <sys/resource.h>
// The only header file in bionic which has a function prototype for ioprio_set
// is libc/include/sys/linux-unistd.h. However, linux-unistd.h conflicts
// badly with unistd.h, so we declare the prototype for ioprio_set directly.
-extern "C" int ioprio_set(int which, int who, int ioprio);
+extern "C" MOZ_EXPORT int ioprio_set(int which, int who, int ioprio);
# define MAYBE_USE_HARD_LINKS 1
static bool sUseHardLinks = true;
#else
# define MAYBE_USE_HARD_LINKS 0
#endif
#ifdef XP_WIN
--- a/tools/profiler/shared-libraries-linux.cc
+++ b/tools/profiler/shared-libraries-linux.cc
@@ -23,17 +23,17 @@
#else
#include <link.h> // dl_phdr_info
#endif
#include <features.h>
#include <dlfcn.h>
#include <sys/types.h>
#ifdef ANDROID
-extern "C" __attribute__((weak))
+extern "C" MOZ_EXPORT __attribute__((weak))
int dl_iterate_phdr(
int (*callback) (struct dl_phdr_info *info,
size_t size, void *data),
void *data);
#endif
int dl_iterate_callback(struct dl_phdr_info *dl_info, size_t size, void *data)
{
--- a/widget/android/AndroidBridge.h
+++ b/widget/android/AndroidBridge.h
@@ -23,27 +23,28 @@
#include "nsIAndroidBridge.h"
#include "nsIMobileMessageCallback.h"
#include "mozilla/Likely.h"
#include "mozilla/StaticPtr.h"
#include "mozilla/layers/GeckoContentController.h"
#include "mozilla/TimeStamp.h"
+#include "mozilla/Types.h"
// Some debug #defines
// #define DEBUG_ANDROID_EVENTS
// #define DEBUG_ANDROID_WIDGET
class nsWindow;
class nsIDOMMozSmsMessage;
class nsIObserver;
/* See the comment in AndroidBridge about this function before using it */
-extern "C" JNIEnv * GetJNIForThread();
+extern "C" MOZ_EXPORT JNIEnv * GetJNIForThread();
extern bool mozilla_AndroidBridge_SetMainThread(pthread_t);
namespace base {
class Thread;
} // end namespace base
typedef void* EGLSurface;
--- a/widget/android/AndroidJNIWrapper.h
+++ b/widget/android/AndroidJNIWrapper.h
@@ -1,33 +1,34 @@
/* -*- Mode: c++; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef AndroidJNIWrapper_h__
#define AndroidJNIWrapper_h__
+#include "mozilla/Types.h"
#include <jni.h>
#include <android/log.h>
-extern "C" jclass jsjni_FindClass(const char *className);
+extern "C" MOZ_EXPORT jclass jsjni_FindClass(const char *className);
/**
* JNIEnv::FindClass alternative.
* Callable from any thread, including code
* invoked via the JNI that doesn't have MOZILLA_INTERNAL_API defined.
* The caller is responsible for ensuring that the class is not leaked by
* calling DeleteGlobalRef at an appropriate time.
*/
-extern "C" jclass jsjni_GetGlobalClassRef(const char *className);
+extern "C" MOZ_EXPORT jclass jsjni_GetGlobalClassRef(const char *className);
-extern "C" jmethodID jsjni_GetStaticMethodID(jclass methodClass,
+extern "C" MOZ_EXPORT jmethodID jsjni_GetStaticMethodID(jclass methodClass,
const char *methodName,
const char *signature);
-extern "C" bool jsjni_ExceptionCheck();
-extern "C" void jsjni_CallStaticVoidMethodA(jclass cls, jmethodID method, jvalue *values);
-extern "C" int jsjni_CallStaticIntMethodA(jclass cls, jmethodID method, jvalue *values);
-extern "C" jobject jsjni_GetGlobalContextRef();
-extern "C" JavaVM* jsjni_GetVM();
-extern "C" JNIEnv* jsjni_GetJNIForThread();
+extern "C" MOZ_EXPORT bool jsjni_ExceptionCheck();
+extern "C" MOZ_EXPORT void jsjni_CallStaticVoidMethodA(jclass cls, jmethodID method, jvalue *values);
+extern "C" MOZ_EXPORT int jsjni_CallStaticIntMethodA(jclass cls, jmethodID method, jvalue *values);
+extern "C" MOZ_EXPORT jobject jsjni_GetGlobalContextRef();
+extern "C" MOZ_EXPORT JavaVM* jsjni_GetVM();
+extern "C" MOZ_EXPORT JNIEnv* jsjni_GetJNIForThread();
#endif /* AndroidJNIWrapper_h__ */
--- a/widget/gonk/libdisplay/GonkDisplay.h
+++ b/widget/gonk/libdisplay/GonkDisplay.h
@@ -12,27 +12,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GONKDISPLAY_H
#define GONKDISPLAY_H
#include <system/window.h>
+#include "mozilla/Types.h"
namespace mozilla {
namespace layers {
class Layer;
}
typedef void * EGLDisplay;
typedef void * EGLSurface;
-class GonkDisplay {
+class MOZ_EXPORT GonkDisplay {
public:
virtual ANativeWindow* GetNativeWindow() = 0;
virtual void SetEnabled(bool enabled) = 0;
typedef void (*OnEnabledCallbackType)(bool enabled);
virtual void OnEnabled(OnEnabledCallbackType callback) = 0;
@@ -61,13 +62,13 @@ public:
* AcquireFence will be signaled when a buffer's content is available.
*/
virtual int GetPrevFBAcquireFd() = 0;
float xdpi;
uint32_t surfaceformat;
};
-__attribute__ ((weak))
+MOZ_EXPORT __attribute__ ((weak))
GonkDisplay* GetGonkDisplay();
}
#endif /* GONKDISPLAY_H */
--- a/widget/gonk/libdisplay/GonkDisplayICS.h
+++ b/widget/gonk/libdisplay/GonkDisplayICS.h
@@ -20,17 +20,17 @@
#include "GonkDisplay.h"
#include "ui/FramebufferNativeWindow.h"
#include "hardware/hwcomposer.h"
#include "utils/RefBase.h"
namespace mozilla {
-class GonkDisplayICS : public GonkDisplay {
+class MOZ_EXPORT GonkDisplayICS : public GonkDisplay {
public:
GonkDisplayICS();
~GonkDisplayICS();
virtual ANativeWindow* GetNativeWindow();
virtual void SetEnabled(bool enabled);
--- a/widget/gonk/libdisplay/GonkDisplayJB.h
+++ b/widget/gonk/libdisplay/GonkDisplayJB.h
@@ -20,17 +20,17 @@
#include "FramebufferSurface.h"
#include "hardware/hwcomposer.h"
#include "hardware/power.h"
#include "ui/Fence.h"
#include "utils/RefBase.h"
namespace mozilla {
-class GonkDisplayJB : public GonkDisplay {
+class MOZ_EXPORT GonkDisplayJB : public GonkDisplay {
public:
GonkDisplayJB();
~GonkDisplayJB();
virtual ANativeWindow* GetNativeWindow();
virtual void SetEnabled(bool enabled);