Backout 981069:cb671e39fd64 breaking master

fb-gh-sync-id: 052d4aab3722d44f5c4fbb0f4f50a2d71ba56927
This commit is contained in:
Clement Genzmer 2015-10-27 10:37:58 -07:00 committed by facebook-github-bot-5
parent d23e622426
commit c902ed2fe5
5 changed files with 8 additions and 57 deletions

View File

@ -9,9 +9,6 @@
package com.facebook.react.uimanager; package com.facebook.react.uimanager;
import android.os.SystemClock;
import android.support.v4.util.Pools;
import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.Event; import com.facebook.react.uimanager.events.Event;
@ -22,30 +19,10 @@ import com.facebook.react.uimanager.events.RCTEventEmitter;
*/ */
/* package */ class OnLayoutEvent extends Event<OnLayoutEvent> { /* package */ class OnLayoutEvent extends Event<OnLayoutEvent> {
private static final Pools.SynchronizedPool<OnLayoutEvent> EVENTS_POOL = private final int mX, mY, mWidth, mHeight;
new Pools.SynchronizedPool<>(20);
private int mX, mY, mWidth, mHeight; protected OnLayoutEvent(int viewTag, int x, int y, int width, int height) {
super(viewTag, 0);
public static OnLayoutEvent obtain(int viewTag, int x, int y, int width, int height) {
OnLayoutEvent event = EVENTS_POOL.acquire();
if (event == null) {
event = new OnLayoutEvent();
}
event.init(viewTag, x, y, width, height);
return event;
}
@Override
public void onDispose() {
EVENTS_POOL.release(this);
}
private OnLayoutEvent() {
}
protected void init(int viewTag, int x, int y, int width, int height) {
super.init(viewTag, SystemClock.uptimeMillis());
mX = x; mX = x;
mY = y; mY = y;
mWidth = width; mWidth = width;

View File

@ -806,7 +806,7 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements
// notify JS about layout event if requested // notify JS about layout event if requested
if (cssNode.shouldNotifyOnLayout()) { if (cssNode.shouldNotifyOnLayout()) {
mEventDispatcher.dispatchEvent( mEventDispatcher.dispatchEvent(
OnLayoutEvent.obtain( new OnLayoutEvent(
tag, tag,
cssNode.getScreenX(), cssNode.getScreenX(),
cssNode.getScreenY(), cssNode.getScreenY(),

View File

@ -11,31 +11,15 @@ package com.facebook.react.uimanager.events;
/** /**
* A UI event that can be dispatched to JS. * A UI event that can be dispatched to JS.
*
* For dispatching events {@link EventDispatcher#dispatchEvent} should be used. Once event object
* is passed to the EventDispatched it should no longer be used as EventDispatcher may decide
* to recycle that object (by calling {@link #dispose}).
*/ */
public abstract class Event<T extends Event> { public abstract class Event<T extends Event> {
private boolean mInitialized; private final int mViewTag;
private int mViewTag; private final long mTimestampMs;
private long mTimestampMs;
protected Event() {
}
protected Event(int viewTag, long timestampMs) { protected Event(int viewTag, long timestampMs) {
init(viewTag, timestampMs);
}
/**
* This method needs to be called before event is sent to event dispatcher.
*/
protected void init(int viewTag, long timestampMs) {
mViewTag = viewTag; mViewTag = viewTag;
mTimestampMs = timestampMs; mTimestampMs = timestampMs;
mInitialized = true;
} }
/** /**
@ -84,16 +68,7 @@ public abstract class Event<T extends Event> {
* Called when the EventDispatcher is done with an event, either because it was dispatched or * Called when the EventDispatcher is done with an event, either because it was dispatched or
* because it was coalesced with another Event. * because it was coalesced with another Event.
*/ */
public void onDispose() { public void dispose() {
}
/*package*/ boolean isInitialized() {
return mInitialized;
}
/*package*/ final void dispose() {
mInitialized = false;
onDispose();
} }
/** /**

View File

@ -110,7 +110,6 @@ public class EventDispatcher implements LifecycleEventListener {
* Sends the given Event to JS, coalescing eligible events if JS is backed up. * Sends the given Event to JS, coalescing eligible events if JS is backed up.
*/ */
public void dispatchEvent(Event event) { public void dispatchEvent(Event event) {
Assertions.assertCondition(event.isInitialized(), "Dispatched event hasn't been initialized");
synchronized (mEventsStagingLock) { synchronized (mEventsStagingLock) {
mEventStaging.add(event); mEventStaging.add(event);
} }

View File

@ -96,7 +96,7 @@ public class TouchEvent extends Event<TouchEvent> {
} }
@Override @Override
public void onDispose() { public void dispose() {
mMotionEvent.recycle(); mMotionEvent.recycle();
} }
} }