Yoonsang Lee [Fri, 31 Jul 2015 05:53:16 +0000 (14:53 +0900)]
Update license information in the spec file
Change-Id: I928b7919cabece3cb5837a766cdea6dad01fa1b3
Yoonsang Lee [Fri, 31 Jul 2015 05:32:25 +0000 (14:32 +0900)]
Remove unused dali-adaptor spec files
- These spec files are not used by anyone so remove them to avoid confusing.
- dali-adaptor-mobile.spec will be removed soon.
Change-Id: I2fd0cacb839909c0df3362f3aee20835c52935df
Adeel Kazmi [Thu, 30 Jul 2015 10:36:55 +0000 (03:36 -0700)]
Merge "Remove RenderThread::mSurface pointer before mWindow.Reset()" into devel/master
suhyung Eom [Thu, 30 Jul 2015 02:40:39 +0000 (11:40 +0900)]
Modified not to reload resource image on surface change
(Reason: imageActor is blinking instantly on device rotation)
Signed-off-by: suhyung Eom <suhyung.eom@samsung.com>
Change-Id: If24322b354544eced059ddb5425f14008530348f
Paul Wisbey [Wed, 29 Jul 2015 17:18:34 +0000 (18:18 +0100)]
Remove RenderThread::mSurface pointer before mWindow.Reset()
+ more pointer validity checks in render-thread
+ remove unused bool in Application
Change-Id: Ica6a713bb91519d2d03025883135d4018e90640f
Richard Underhill [Thu, 30 Jul 2015 08:34:20 +0000 (09:34 +0100)]
Stop memory leaks in FontClient.
Change-Id: Iaa66eeb3ea1d4f454e17f704cd75a1183959f36b
Signed-off-by: Richard Underhill <r.underhill@partner.samsung.com>
Tom Robinson [Thu, 30 Jul 2015 08:26:34 +0000 (09:26 +0100)]
DALi Version 1.0.51
Change-Id: Id03556402d55583ad4157e4d7d701c661a0954a2
Kimmo Hoikka [Wed, 29 Jul 2015 12:04:10 +0000 (13:04 +0100)]
Cleanup dead abstraction code, remove boost dependency from resource loader
Change-Id: I445d3f36d7309a966093180a70d41a2958c394a3
Nick Holland [Wed, 29 Jul 2015 06:36:37 +0000 (07:36 +0100)]
Fix build break when building for libUV (Node.JS)
Change-Id: Idd697f81ffe47dd0bef1b04ef45122550d9057c5
Tom Robinson [Mon, 27 Jul 2015 09:42:59 +0000 (10:42 +0100)]
Fix Dali responding to accessibility events when backgrounded
Change-Id: I296ab85fc2cbfd7f71ba744ccd2496cff849ee87
Adeel Kazmi [Mon, 27 Jul 2015 17:32:03 +0000 (10:32 -0700)]
Merge "Re-add linker dependency to boost_system" into devel/master
Adeel Kazmi [Mon, 27 Jul 2015 15:40:15 +0000 (16:40 +0100)]
Re-add linker dependency to boost_system
Change-Id: I6003834ed6e562e6048b95202fe5db44d8f97d23
Paul Wisbey [Thu, 23 Jul 2015 17:14:19 +0000 (18:14 +0100)]
Keep track of Bitmap data ownership
Change-Id: I812047970a845bd3436beb568f428d04d58b1a5f
Heeyong Song [Thu, 23 Jul 2015 04:50:19 +0000 (13:50 +0900)]
Fix accessibility issue
Change-Id: I539f2d4c14a98f60ab77a69b7208318f399f9320
Adeel Kazmi [Thu, 23 Jul 2015 14:23:15 +0000 (07:23 -0700)]
Merge "UTC test fix and Adaptors initialising accessibility correctly" into devel/master
Heeyong Song [Thu, 23 Jul 2015 05:40:31 +0000 (14:40 +0900)]
Fix prevent issue - uncaught exception
Change-Id: Iedb3b409f52b89df1189ddf4c57721ca5c10fc90
Tom Robinson [Wed, 22 Jul 2015 15:31:02 +0000 (16:31 +0100)]
UTC test fix and Adaptors initialising accessibility correctly
Change-Id: Ic5852d5c3a507052bf2333d5d4329a72d9e531f0
Richard Huang [Thu, 23 Jul 2015 10:55:59 +0000 (11:55 +0100)]
DALi Version 1.0.50
Change-Id: I1005ead5d6996091648d9aef8992804e46d357c6
Andrew Cox [Mon, 13 Jul 2015 17:26:04 +0000 (18:26 +0100)]
Remove boost threading from resource loading
Pushing for review.
Unit test updates still to come.
Change-Id: I0e0ac78954b91cec13491c82a70cec19a8fc8494
Signed-off-by: Andrew Cox <andrew.cox@partner.samsung.com>
taeyoon [Mon, 20 Jul 2015 08:07:15 +0000 (17:07 +0900)]
Fix prevent for resource leak
Change-Id: Ie53c89bd441023e0c54eacb0cc07df2a29f307ce
Victor Cebollada [Thu, 16 Jul 2015 07:14:33 +0000 (08:14 +0100)]
Function added to check if a script may have ligatures that need to be broken.
Change-Id: I92c9d23b76c174f47057a75fa071e19aa23a7676
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
Nick Holland [Fri, 17 Jul 2015 08:25:49 +0000 (09:25 +0100)]
DALi Version 1.0.49
Change-Id: I4a691942c0a8db581b668cd8840847a56af29878
Adeel Kazmi [Tue, 30 Jun 2015 14:58:36 +0000 (15:58 +0100)]
React to window delete events & handle SIGTERM, SIGHUP
Change-Id: I9e5084cc359b98a379a1f0b2a2c0cf5c3b0c031e
Heeyong Song [Wed, 15 Jul 2015 05:30:19 +0000 (14:30 +0900)]
Fix feedback build error
Change-Id: Id422c9d5b18b4000f636f2c528c0b7692905d5b1
Adeel Kazmi [Tue, 14 Jul 2015 16:05:17 +0000 (09:05 -0700)]
Merge "Removed feedback controller Boost dependency" into devel/master
Victor Cebollada [Wed, 8 Jul 2015 10:56:35 +0000 (11:56 +0100)]
Bopomofo script added.
* Phonetic notation used for the transcription of spoken Chinese.
Change-Id: I491d59b36e73bd31687ccc690ab2ddf661a0e938
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
Lee Morgan [Fri, 3 Jul 2015 14:38:23 +0000 (15:38 +0100)]
Removed feedback controller Boost dependency
Change-Id: I665d99ea19cd0b93910b06683f217cefa2fab4e2
Kimmo Hoikka [Tue, 14 Jul 2015 14:04:06 +0000 (07:04 -0700)]
Merge "Boost removal from performance server" into devel/master
Kimmo Hoikka [Tue, 14 Jul 2015 08:47:05 +0000 (01:47 -0700)]
Merge "Fix prevent issue - uncaught exception" into devel/master
Adeel Kazmi [Tue, 14 Jul 2015 08:12:37 +0000 (01:12 -0700)]
Merge "Remove bullet and assimp plugins from .spec file (as they are both deleted now)" into devel/master
Heeyong Song [Mon, 29 Jun 2015 02:41:01 +0000 (11:41 +0900)]
Fix prevent issue - uncaught exception
In function main(int, char **) an exception of type Dali::DaliException is thrown and never caught.
MainLoop() may throw an exception.
Change-Id: Iaa61013fd07a287e360fb37d0a3548c7ea33343c
Heeyong Song [Tue, 14 Jul 2015 07:11:48 +0000 (16:11 +0900)]
Remove write access to indicator shared memory
Change-Id: Idad9feae61aab3a3674784b76d719604ca0f0d4c
Kimmo Hoikka [Mon, 13 Jul 2015 17:42:57 +0000 (18:42 +0100)]
Remove bullet and assimp plugins from .spec file (as they are both deleted now)
Change-Id: Iaccdd626aada39cf3727590741db868e2c77de1a
Nick Holland [Tue, 7 Jul 2015 11:19:14 +0000 (12:19 +0100)]
Boost removal from performance server
Change-Id: Ia02b511bfc33e101b2eccbed57cc71fe67d6a0b6
Andrew Cox [Mon, 13 Jul 2015 15:06:51 +0000 (16:06 +0100)]
Removed Resource Saving
Change-Id: I74c11920beb752997f4da8312266b7a4604b5614
Signed-off-by: Andrew Cox <andrew.cox@partner.samsung.com>
Adeel Kazmi [Mon, 13 Jul 2015 10:09:32 +0000 (11:09 +0100)]
(Window) Update class-name at initialisation
Change-Id: I71ad4d83c488c7b39731aa0d62434839662f454c
Andrew Cox [Tue, 16 Jun 2015 18:42:42 +0000 (19:42 +0100)]
Shader binary synchronous simplified IO
Change-Id: I4894729a48527bcaa7b710d616eeeacdc7f7c8b3
Signed-off-by: Andrew Cox <andrew.cox@partner.samsung.com>
Kimmo Hoikka [Fri, 10 Jul 2015 16:32:33 +0000 (09:32 -0700)]
Merge "Fix for deadlock in PixmapRenderSurface" into devel/master
Kimmo Hoikka [Fri, 10 Jul 2015 16:06:56 +0000 (09:06 -0700)]
Merge "Refactor dali key files" into devel/master
David Fumanal [Fri, 10 Jul 2015 14:14:57 +0000 (15:14 +0100)]
Fix for deadlock in PixmapRenderSurface
Change-Id: I902d5efc30772dbb4d5555de560aa390ab2271e0
Kimmo Hoikka [Fri, 10 Jul 2015 14:47:22 +0000 (07:47 -0700)]
Merge "Automated test fix for framebuffer creation" into devel/master
David Fumanal [Tue, 7 Jul 2015 13:08:32 +0000 (14:08 +0100)]
Automated test fix for framebuffer creation
Change-Id: I8a16311b3bb98cb3813da3f6f2d9693f98ffe09a
Kimmo Hoikka [Thu, 9 Jul 2015 17:40:21 +0000 (18:40 +0100)]
Remove de-funct Bullet dynamics plugin
Change-Id: Iee50462d991b726262246fc15b2e5388d2ec5591
Yoonsang Lee [Thu, 11 Jun 2015 07:48:24 +0000 (16:48 +0900)]
Refactor dali key files
- Change type of dali key definition from extern const KEY
to enum Key to remove unnecessary exported symbols.
- Seperate platform-specfic key mapping table (key-mapping-xxx.cpp)
and common key functions (key-impl.cpp)
- Add Dali::Internal::Adaptor::KeyLookup::GetKeyName()
- Definition macros for key names are deprecated in utilX,
so use key name string instead of macro in key-mapping-xxx.cpp.
- Apply some changed key names (XF86Back, XF86Home, XF86Menu)
- Remove old-named key variables - DALI_KEY_SEND, END, SELECT
- Add key code mapping entries for wayland
Change-Id: Ic1939e11f2c775880a50d674686e3b1de6413aec
Kimmo Hoikka [Tue, 7 Jul 2015 15:20:48 +0000 (16:20 +0100)]
remove deadlock from pixmap render surface, mutex lock is being held while waiting for notification
Change-Id: Idcabfee4a7dc2dabf1f9a8f86d8960f9ae8f8187
Adeel Kazmi [Thu, 9 Jul 2015 16:10:40 +0000 (09:10 -0700)]
Merge "DALi Version 1.0.48" into devel/master
Lee Morgan [Thu, 9 Jul 2015 14:03:35 +0000 (15:03 +0100)]
DALi Version 1.0.48
Change-Id: I5ff908d337952a1145afcf01a95f7fb834c2e8b8
Adeel Kazmi [Wed, 8 Jul 2015 10:47:14 +0000 (11:47 +0100)]
(Window) Set class-name before Map
Change-Id: I37f6d6014ac73f84a4abc96efa6090114290817e
Kimmo Hoikka [Tue, 7 Jul 2015 10:26:31 +0000 (11:26 +0100)]
Multithreaded wait test case for ConditionalWait
Change-Id: I46ea1fd4baa2fef92aa9271b1e5edadbe63d3c20
Adeel Kazmi [Tue, 7 Jul 2015 14:16:53 +0000 (07:16 -0700)]
Merge "libuv support for dali-adaptor for running in Node.JS" into devel/master
Nick Holland [Tue, 23 Jun 2015 07:32:26 +0000 (08:32 +0100)]
libuv support for dali-adaptor for running in Node.JS
Highlights:
libuv support for timers, callbacks, file descriptor monitoring
pure X11 support for touch / key events
Exposed SceneCreated(), SetViewMode() and SetStereoBase in adaptor.h
Change-Id: I62030ef76337c568852f07d0ef6418e708fee9a3
Victor Cebollada [Tue, 23 Jun 2015 14:37:06 +0000 (15:37 +0100)]
Fix Klocwork issues.
Change-Id: I91b0212c694b879a6b0aae959028ac1b30996048
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
Adeel Kazmi [Fri, 3 Jul 2015 14:05:26 +0000 (07:05 -0700)]
Merge "Boost removal from pixmap" into devel/master
David Fumanal [Fri, 3 Jul 2015 10:58:29 +0000 (11:58 +0100)]
Boost removal from pixmap
Change-Id: I431e6bdc4efee3f62a36be739b7da6d32e91a4f1
Kimmo Hoikka [Wed, 1 Jul 2015 11:10:37 +0000 (12:10 +0100)]
Harmonize test failures
Change-Id: I5ddf3174abfdbf25b6a0183e40e10bb70bc091ea
David Fumanal [Thu, 2 Jul 2015 12:49:22 +0000 (13:49 +0100)]
Boost removal:Singleton service with __thread
Change-Id: I38379c02cd44e9f68621485076e6c175d451f110
Nick Holland [Wed, 1 Jul 2015 08:17:51 +0000 (09:17 +0100)]
Fix segfault with remote image download and tidy up
Segfault caused by
When downloading a remote image that does not exist:
curl_easy_getinfo returning -1 for content length.
-1 gets static_cast to size_t == SIZE_MAX
SIZE_MAX passed to Dali::Vector::Reserve() as the capacity
This overflows the vector capacity calculation, ending up with only
15 bytes allocated.
It then seg faults trying to write the vector meta data which is
16 bytes long.
-----------
Tidy up
Removed memory buffer that was created to store the HTTP request header, but was
never used.
Removed all curl code from resource-thread-image.cpp and made a generic
download file function in a separate file. We can now re-used that function for
other file types.
Added lazy creation of threads. Previously we would always create local and remote threads
for images.
Change-Id: I377e2967ac18b3e115411e370e5b85385ce23632
Adeel Kazmi [Wed, 1 Jul 2015 17:02:58 +0000 (10:02 -0700)]
Merge "Replace boost::thread with pthread in render,update & vsync thread" into devel/master
Adeel Kazmi [Wed, 1 Jul 2015 16:26:05 +0000 (09:26 -0700)]
Merge "Prevent Tap UP event occuring at end of Longpress" into devel/master
Adeel Kazmi [Wed, 1 Jul 2015 15:46:44 +0000 (08:46 -0700)]
Merge "ConditionalWait to replace boost conditional variable usage" into devel/master
Agnelo Vaz [Wed, 1 Jul 2015 14:38:25 +0000 (15:38 +0100)]
Prevent Tap UP event occuring at end of Longpress
Change-Id: Ic50adb215648f52816a83c5f5c9d3b17a54c7e08
Signed-off-by: Agnelo Vaz <agnelo.vaz@samsung.com>
Adeel Kazmi [Wed, 1 Jul 2015 13:23:36 +0000 (06:23 -0700)]
Merge "DALi Version 1.0.47" into devel/master
Ferran Sole [Wed, 1 Jul 2015 13:18:31 +0000 (14:18 +0100)]
DALi Version 1.0.47
Change-Id: If1e25d924934cc65e4ffe845b31faf22fb3e8dbf
Xiangyin Ma [Tue, 30 Jun 2015 14:56:58 +0000 (15:56 +0100)]
Replace boost::thread with pthread in render,update & vsync thread
Change-Id: I3f6259cd6174b39fcf00f5e0b7b09e62f9f2cb71
Kimmo Hoikka [Tue, 30 Jun 2015 15:00:41 +0000 (16:00 +0100)]
ConditionalWait to replace boost conditional variable usage
Change-Id: I337a7c0577056bf40e4a3cddd1cc100f6d5af7af
Nick Holland [Tue, 30 Jun 2015 14:37:04 +0000 (15:37 +0100)]
Idle callback boost removal and tidy up
Change-Id: Ib31b8be4838226030d6dcaba1661898c4cd43e0e
taeyoon [Mon, 29 Jun 2015 06:44:37 +0000 (15:44 +0900)]
Fix a prevent issue - Resource leak
- Resource leak in GetDATAStoragePath()
Change-Id: If55d99124d6fa8559bd573ad7464fb44e990ac72
HyunJu Shin [Mon, 29 Jun 2015 01:29:56 +0000 (18:29 -0700)]
Merge "Fix to enable eldbus" into devel/master
Francisco Santos [Fri, 26 Jun 2015 14:23:23 +0000 (15:23 +0100)]
Merge branch 'devel/new_mesh' into devel/master
Change-Id: I4e6bc90b0175f34392a59dca76abc7fe5f6dd929
Francisco Santos [Fri, 26 Jun 2015 14:01:32 +0000 (15:01 +0100)]
Merge branch 'devel/master' into devel/new_mesh
Conflicts:
build/tizen/adaptor/Makefile.am
Change-Id: I5a99833c0d29907510de2b25813f091052f1f9c5
Heeyong Song [Fri, 26 Jun 2015 06:44:15 +0000 (15:44 +0900)]
Fix to enable eldbus
Change-Id: I3982377c48ce4a94be24064e8e0747241f45f7a1
Adeel Kazmi [Thu, 25 Jun 2015 15:30:08 +0000 (08:30 -0700)]
Merge "Add support for new accessibility actions" into devel/master
Francisco Santos [Thu, 25 Jun 2015 13:52:15 +0000 (14:52 +0100)]
Merge branch 'devel/master' into devel/new_mesh
Conflicts:
build/tizen/configure.ac
Change-Id: If7a3942fd3f79cfa01b808345875bf121bdb9898
taeyoon [Thu, 25 Jun 2015 07:53:18 +0000 (16:53 +0900)]
Move window-extension.h from public-api to devel-api
Change-Id: I3294247348eb4316285d2f350c7924c76645821e
Adeel Kazmi [Wed, 24 Jun 2015 14:59:25 +0000 (07:59 -0700)]
Merge "DALi Version 1.0.46" into devel/master
Chu Hoang [Wed, 24 Jun 2015 14:54:29 +0000 (15:54 +0100)]
DALi Version 1.0.46
Change-Id: I3c34c9581ade654934bbe62dbfd12077e61560d7
Yoonsang Lee [Tue, 23 Jun 2015 06:08:10 +0000 (15:08 +0900)]
Fix Tizen build break - change gles20 to glesv2
Change-Id: I26dfd5a0bdb0573292cb34bbe4a3c540ec2aeee9
Kimmo Hoikka [Mon, 22 Jun 2015 17:00:46 +0000 (10:00 -0700)]
Merge "Fix prevent issue - resource leak" into devel/master
Kimmo Hoikka [Mon, 22 Jun 2015 16:39:43 +0000 (09:39 -0700)]
Merge "Fixed issue with double-tap gestures" into devel/master
Paul Wisbey [Mon, 22 Jun 2015 13:39:59 +0000 (14:39 +0100)]
Fixed issue with double-tap gestures
Change-Id: I9b936ad29454d86fac32216b3210390729bff7d5
Adeel Kazmi [Mon, 22 Jun 2015 15:04:35 +0000 (08:04 -0700)]
Merge "Change Object profiler to use Environment Options, harmonize environment variable name (now: DALI_OBJECT_PROFILER_INTERVAL)" into devel/master
Kimmo Hoikka [Mon, 22 Jun 2015 14:32:37 +0000 (15:32 +0100)]
Fix FPS tracking through environment variable (and make if a bit more lightweight and usable)
Change-Id: Idc04f90cf088aab1704c0d242aabab7c4222f90d
taeyoon [Mon, 22 Jun 2015 13:39:48 +0000 (22:39 +0900)]
Fix prevent issue - resource leak
Change-Id: Ib095425b6fbd5a47777a9011cc7ddd10f6892ec0
Adeel Kazmi [Mon, 22 Jun 2015 13:25:40 +0000 (14:25 +0100)]
Ensure libunibreak does not export symbols
CXXFLAGS are being set but they're not picked up when compiling C files, therefore we have to set
CFLAGS in adaptor as well.
Change-Id: I807192f9de3bdde9ea2822673b6ddd6ba577f9ed
Kimmo Hoikka [Mon, 22 Jun 2015 12:47:56 +0000 (13:47 +0100)]
Change Object profiler to use Environment Options, harmonize environment variable name (now: DALI_OBJECT_PROFILER_INTERVAL)
Change-Id: I095e84289d50c977668507fc9894fccb6b860079
Francisco Santos [Mon, 22 Jun 2015 10:45:14 +0000 (11:45 +0100)]
Update profiling of objects with new mesh objects.
Change-Id: Ic256ff18235930c2ba0e7dd22b183baa8269c188
Richard Huang [Fri, 12 Jun 2015 15:31:42 +0000 (16:31 +0100)]
Add support for new accessibility actions
1. Rename AccessibilityManager to AccessibilityAdaptor
2. Added support of getting accessibility messages from dbus
3. Added support for new accessibility actions
Change-Id: I96f2a1bbb6ee92e71dc1cc010a6551f6042568e9
Agnelo Vaz [Fri, 19 Jun 2015 10:42:50 +0000 (11:42 +0100)]
Fix Clipboard to return 0 when has no items
Change-Id: If7ce529fa7dfe3ca0ef71a82a7663bf70dff80f1
Signed-off-by: Agnelo Vaz <agnelo.vaz@samsung.com>
Andrew Cox [Thu, 18 Jun 2015 15:18:11 +0000 (16:18 +0100)]
Removed traces of ImageAttributes and dead old JPEG loader
Change-Id: I67e4cc0ec822d8930e18bdae04c6d9d7fb85de25
Signed-off-by: Andrew Cox <andrew.cox@partner.samsung.com>
Adeel Kazmi [Thu, 18 Jun 2015 11:18:21 +0000 (04:18 -0700)]
Merge "DALi Version 1.0.45" into devel/master
Xiangyin Ma [Thu, 18 Jun 2015 11:14:19 +0000 (12:14 +0100)]
DALi Version 1.0.45
Change-Id: Icce7e1b7c5ae035cd76e440da89cbeeb565b4ea2
Heeyong Song [Thu, 11 Jun 2015 01:57:32 +0000 (10:57 +0900)]
Fix prevent issue - Dereference null return value
Change-Id: If062d1ac9e2d229cc6c175e02c5841305a725d56
Kimmo Hoikka [Wed, 17 Jun 2015 16:39:15 +0000 (09:39 -0700)]
Merge "Removed Setters from EnvironmentOptions & added WindowClassName as an environment variable" into devel/master
Adeel Kazmi [Wed, 17 Jun 2015 15:37:37 +0000 (08:37 -0700)]
Merge "Change Application to use NotifySceneCreated from Adaptor" into devel/master
Victor Cebollada [Mon, 15 Jun 2015 08:30:22 +0000 (09:30 +0100)]
Add the 'Carriage Return' character to the IsNewParagraph().
Change-Id: I01c559eca64c69611759b9e7b601fb2287cdb4a4
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
Adeel Kazmi [Wed, 17 Jun 2015 10:54:31 +0000 (11:54 +0100)]
Removed Setters from EnvironmentOptions & added WindowClassName as an environment variable
Change-Id: I18d078328dffa6cb63f282237bf5b21204ca6e1a
Kimmo Hoikka [Wed, 17 Jun 2015 09:55:37 +0000 (02:55 -0700)]
Merge "Use environment option to set the name of the window" into devel/master
Kimmo Hoikka [Tue, 16 Jun 2015 15:59:40 +0000 (16:59 +0100)]
Change Application to use NotifySceneCreated from Adaptor
Change-Id: Iff5b4cb1c08ed15d2fa73c0a69958c496d1c1853
Kimmo Hoikka [Tue, 16 Jun 2015 15:02:44 +0000 (08:02 -0700)]
Merge "Add API to notify adaptor that scene has been created" into devel/master
Adeel Kazmi [Tue, 16 Jun 2015 14:36:04 +0000 (15:36 +0100)]
Use environment option to set the name of the window
Change-Id: I58fde9c92fc5612a3897bf943451d4619a70d57b