@@ -40,56 +40,94 @@ BackgroundLayer::~BackgroundLayer() = default;
4040
4141jni::Local<jni::Object<>> BackgroundLayer::getBackgroundColor (jni::JNIEnv& env) {
4242 using namespace mbgl ::android::conversion;
43- return std::move (*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer (layer).getBackgroundColor ()));
43+ auto layer = layerPtr.get ();
44+ if (!layer) {
45+ return std::move (*convert<jni::Local<jni::Object<>>>(env, style::BackgroundLayer::getDefaultBackgroundColor ()));
46+ }
47+ return std::move (*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer (*layer).getBackgroundColor ()));
4448}
4549
4650jni::Local<jni::Object<TransitionOptions>> BackgroundLayer::getBackgroundColorTransition (jni::JNIEnv& env) {
4751 using namespace mbgl ::android::conversion;
48- mbgl::style::TransitionOptions options = toBackgroundLayer (layer).getBackgroundColorTransition ();
52+ auto layer = layerPtr.get ();
53+ if (!layer) {
54+ return std::move (*convert<jni::Local<jni::Object<TransitionOptions>>>(env, mbgl::style::TransitionOptions ()));
55+ }
56+ mbgl::style::TransitionOptions options = toBackgroundLayer (*layer).getBackgroundColorTransition ();
4957 return std::move (*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options));
5058}
5159
5260void BackgroundLayer::setBackgroundColorTransition (jni::JNIEnv&, jlong duration, jlong delay) {
61+ auto layer = layerPtr.get ();
62+ if (!layer) {
63+ return ;
64+ }
5365 mbgl::style::TransitionOptions options;
5466 options.duration .emplace (mbgl::Milliseconds (duration));
5567 options.delay .emplace (mbgl::Milliseconds (delay));
56- toBackgroundLayer (layer).setBackgroundColorTransition (options);
68+ toBackgroundLayer (* layer).setBackgroundColorTransition (options);
5769}
5870
5971jni::Local<jni::Object<>> BackgroundLayer::getBackgroundPattern (jni::JNIEnv& env) {
6072 using namespace mbgl ::android::conversion;
61- return std::move (*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer (layer).getBackgroundPattern ()));
73+ auto layer = layerPtr.get ();
74+ if (!layer) {
75+ return std::move (
76+ *convert<jni::Local<jni::Object<>>>(env, style::BackgroundLayer::getDefaultBackgroundPattern ()));
77+ }
78+ return std::move (*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer (*layer).getBackgroundPattern ()));
6279}
6380
6481jni::Local<jni::Object<TransitionOptions>> BackgroundLayer::getBackgroundPatternTransition (jni::JNIEnv& env) {
6582 using namespace mbgl ::android::conversion;
66- mbgl::style::TransitionOptions options = toBackgroundLayer (layer).getBackgroundPatternTransition ();
83+ auto layer = layerPtr.get ();
84+ if (!layer) {
85+ return std::move (*convert<jni::Local<jni::Object<TransitionOptions>>>(env, mbgl::style::TransitionOptions ()));
86+ }
87+ mbgl::style::TransitionOptions options = toBackgroundLayer (*layer).getBackgroundPatternTransition ();
6788 return std::move (*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options));
6889}
6990
7091void BackgroundLayer::setBackgroundPatternTransition (jni::JNIEnv&, jlong duration, jlong delay) {
92+ auto layer = layerPtr.get ();
93+ if (!layer) {
94+ return ;
95+ }
7196 mbgl::style::TransitionOptions options;
7297 options.duration .emplace (mbgl::Milliseconds (duration));
7398 options.delay .emplace (mbgl::Milliseconds (delay));
74- toBackgroundLayer (layer).setBackgroundPatternTransition (options);
99+ toBackgroundLayer (* layer).setBackgroundPatternTransition (options);
75100}
76101
77102jni::Local<jni::Object<>> BackgroundLayer::getBackgroundOpacity (jni::JNIEnv& env) {
78103 using namespace mbgl ::android::conversion;
79- return std::move (*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer (layer).getBackgroundOpacity ()));
104+ auto layer = layerPtr.get ();
105+ if (!layer) {
106+ return std::move (
107+ *convert<jni::Local<jni::Object<>>>(env, style::BackgroundLayer::getDefaultBackgroundOpacity ()));
108+ }
109+ return std::move (*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer (*layer).getBackgroundOpacity ()));
80110}
81111
82112jni::Local<jni::Object<TransitionOptions>> BackgroundLayer::getBackgroundOpacityTransition (jni::JNIEnv& env) {
83113 using namespace mbgl ::android::conversion;
84- mbgl::style::TransitionOptions options = toBackgroundLayer (layer).getBackgroundOpacityTransition ();
114+ auto layer = layerPtr.get ();
115+ if (!layer) {
116+ return std::move (*convert<jni::Local<jni::Object<TransitionOptions>>>(env, mbgl::style::TransitionOptions ()));
117+ }
118+ mbgl::style::TransitionOptions options = toBackgroundLayer (*layer).getBackgroundOpacityTransition ();
85119 return std::move (*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options));
86120}
87121
88122void BackgroundLayer::setBackgroundOpacityTransition (jni::JNIEnv&, jlong duration, jlong delay) {
123+ auto layer = layerPtr.get ();
124+ if (!layer) {
125+ return ;
126+ }
89127 mbgl::style::TransitionOptions options;
90128 options.duration .emplace (mbgl::Milliseconds (duration));
91129 options.delay .emplace (mbgl::Milliseconds (delay));
92- toBackgroundLayer (layer).setBackgroundOpacityTransition (options);
130+ toBackgroundLayer (* layer).setBackgroundOpacityTransition (options);
93131}
94132
95133// BackgroundJavaLayerPeerFactory
0 commit comments